CakePHP多个条件不能按预期工作

时间:2010-09-20 15:48:40

标签: cakephp find conditional-statements

我有一个具有多个条件的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))));

当我测试它时,数组受第一个条件的限制,但不受第二个条件(或后续条件)的限制。有人知道这里有什么问题吗?

1 个答案:

答案 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)))));