2010-09-20 57 views
1

我有一個find()查詢與多個條件,但返回數組包含條目應排除的條件。我在CakePHP文檔中讀到默認的操作符是「AND」,這意味着結果必須符合所有條件,對吧?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)))); 

當我測試,該陣列由第一條件的限制,而不是由第二個(或後續者)。有人知道這裏有什麼問題嗎?

回答

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))))); 
+0

謝謝!我錯誤地鍵入了上面的例子,並且已經使用了=>而不是逗號,但它仍然不起作用。然而,迫使AND工作,這很奇怪,因爲根據文檔,這應該是默認的。無論如何,再次感謝您的幫助 - 非常感謝! – Justin 2010-09-21 13:47:46

+0

很高興我可以幫助...是的,你會得到任何結果與你在問題中輸入的內容似乎很奇怪。 – bjudson 2010-09-21 14:32:38