Несколько условий CakePHP не работают, как ожидалось - PullRequest
1 голос
/ 20 сентября 2010

У меня есть запрос find () с несколькими условиями, но возвращаемый массив содержит записи, которые должны быть исключены условиями.В документации CakePHP я прочитал, что оператором по умолчанию является «И», что должно означать, что результаты должны соответствовать каждому условию, верно?

Вот мой код, если что-то не так с этим ...

$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 Ответ

2 голосов
/ 21 сентября 2010

Это правильный синтаксис:

$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)))));
...