我的数据库中的VARCHAR字段有逗号分隔的标记列表。
我有一个我想要排除的值列表,但有问题。
这就是我的尝试......
$result = $this->Tags->find(
'all',
'conditions'=>array(
'fieldName NOT LIKE'=>'%tag1%',
'fieldName NOT LIKE'=>'%tag2%'
)
);
仅适用于条件中的第一行。
也试过......
$result = $this->Tags->find(
'all',
'conditions'=>array(
'NOT'=>array(
'fieldName LIKE'=>'%tag1%',
'fieldName LIKE'=>'%tag2%'
(
)
);
我一直在查看Cake文档,但一直未能找到它。感谢。
答案 0 :(得分:1)
这里有一些问题。首先,语法不正确。我认为这只是你输入问题的一个错误。
第二个问题难以发现。如果在数组中包含密钥
'fieldName NOT LIKE'
不止一次,它会覆盖自己。
为了防止这种情况,你必须将它包装在一个数组中:
$result = $this->Tags->find('all',array(
'conditions'=>array(
array('fieldName NOT LIKE'=>'%tag1%'),
array('fieldName NOT LIKE'=>'%tag2%')
)));
另一种选择是按如下方式编写查询:
$result = $this->Tags->find('all',array(
'conditions'=>array(
'fieldName NOT REGEXP'=>'tag1|tag2',
)));
答案 1 :(得分:0)
我看你的语法不正确, 也许你会在'all'之后忘记数组,
像这样,$result = $this->Tags->find('all',array(
'conditions'=> array( 'fieldName NOT LIKE' =>'%tag1%',
'fieldName NOT LIKE'=>'%tag2%')
));