我有一个具有多个条件的find()查询,但返回的数组包含的条目应该被条件排除。我在CakePHP文档中读到默认运算符是“AND”,这应该意味着结果必须满足每个条件,对吗?
这是我的代码,万一有问题...
$this->set('object', $this->Model->find('all', array('conditions' =>
array('Model.field between ? and ?',
array($value1, $value2)),
array('Model.field2 between ? and ?',
array($value3, $value4))));
当我测试它时,数组受第一个条件的限制,但不受第二个条件(或后续条件)的限制。有人知道这里有什么问题吗?
答案 0 :(得分:2)
这是正确的语法:
$this->Model->find('all', array('conditions' => array(
'Model.field BETWEEN ? AND ?' => array($value1, $value2),
'Model.field2 BETWEEN ? AND ?' => array($value3, $value4))));
注意双箭头而不是第二行和第三行的逗号,这两个条件应该是同一个数组的一部分。
如果这不能解决问题,您可以尝试强制它使用AND:
$this->Model->find('all' array('conditions' => array('AND' => array(
'Model.field BETWEEN ? AND ?' => array($value1, $value2),
'Model.field2 BETWEEN ? AND ?' => array($value3, $value4)))));