LIKE
因为比较值对于数组没有意义。你想要的compare
未来IN
. 此外,在values
无理由:
$meta_query_args = [
[
\'key\' => \'checkboxes\',
\'value\' => [\'facebook\', \'twitter\'],
\'compare\' => \'IN\',
],
];
编辑:因此,根据您的评论,您使用的是ACF,它将多个复选框存储为一个序列化数组。因此,需要对单个字符串使用多个LIKE查询。
$meta_query_args = [
\'relation\' => \'OR\',
[
\'key\' => \'checkboxes\',
\'value\' => \'"facebook"\',
\'compare\' => \'LIKE\',
],
[
\'key\' => \'checkboxes\',
\'value\' => \'"twitter"\',
\'compare\' => \'LIKE\',
],
];
您的错误是试图将数组用作LIKE的值。要像查询多个可能的值一样进行查询,您需要使用
OR
关系额外的引号是因为这是在序列化数组中真正查询特定值的唯一方法。
的元值checkboxes
如果选中Facebook和Twitter,则会出现如下情况:
a:2:{i:0;s:8:"facebook";i:1;s:7:"twitter";}
所以当你询问
LIKE
\'"facebook"
你在试图找到价值
"facebook"
在这样的完整值内。引号是为了确保您不会错误地找到如下值
not_facebook
.
如果有很多值需要以这种方式查询,那么您的性能将非常糟糕。这是一种非常低效的存储此类查询数据的方法。