数据库中的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文档中查找,但没有找到具体的内容。谢谢
这里有几个问题。首先,语法不正确。我想这只是你在输入问题时犯的一个错误。
第二个问题更难发现。如果您在阵列中包括密钥
'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',
)));
我看你的语法不正确,也许你忘了数组毕竟,
像这样,
$result = $this->Tags->find('all',array(
'conditions'=> array( 'fieldName NOT LIKE' =>'%tag1%',
'fieldName NOT LIKE'=>'%tag2%')
));