Cakephp模型查找多个';不像';


Cakephp model find multiple 'not like'

数据库中的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%')
 ));