2012-02-25 63 views
8

我是cakephp的初學者,並且我想在查找方法中使用SQL IN運算符,我有單詞表。
我的代碼是:如何在cakephp的find方法中使用SQL IN運算符ORM

$this->Word->find('Word.wordid in (83,82)'); 

,這個代碼創建這個查詢:

SELECT `Userword`.`userwordid`, `Userword`.`userid`, `Userword`.`wordid`, 
`Userword`.`date`, `Userword`.`levelid` FROM `userwords` AS `Userword` WHERE 
`Userword`.`wordid` = (82) 

,但我需要此查詢

SELECT `Userword`.`userwordid`, `Userword`.`userid`, `Userword`.`wordid`, 
Userword`.`date`, `Userword`.`levelid` FROM `userwords` AS `Userword` WHERE 
`Userword`.`wordid` IN (83,82) 

怎麼能得到這樣的查詢(使用IN操作符)
謝謝。

回答

22

你需要讓蛋糕照顧是 - 簡單地使用它,因爲它是一個字符串(但要確保它是一個數組):

$arrayOfIds = [1, 5, ...]; 
$this->Word->find('all', array(
    'conditions' => array('Word.wordid' => $arrayOfIds) 
)); 
+15

請注意,這僅適用於CakePHP的<= 2。 X。在3.x中,您需要再次手動添加IN:''Word.wordid IN'=> $ arrayOfIds' – mark 2014-09-21 22:16:03

+0

給您的評論投票 – 2015-05-07 08:08:33

+0

無法正常工作 它構建的查詢類似於'SELECT'User'.'email' ,'User'.'id' FROM'users' AS'User' WHERE'User'.'pecialization_id' = '26,19'' – urfusion 2015-09-17 19:09:25