2012-02-25 2 views
8

Я начинаю в cakephp, и я хочу использовать SQL-оператор IN в поиске, у меня есть таблица слов.
мой код:как использовать оператор SQL IN в методе поиска cakephp 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. Икс. В 3.x вам нужно будет вручную добавить IN снова: '' Word.wordid IN '=> $ arrayOfIds' – mark

+0

комментировать –

+0

не работает он строит запрос как 'SELECT' User'''email' , 'User'.'id' FROM' users' AS 'User' WHERE' User'.'specialization_id' = '26, 19'' – urfusion