How to create a `IN` clause in CakePHP query?

onedayiwillchangethis picture onedayiwillchangethis · Nov 12, 2014 · Viewed 16.1k times · Source

How do you make it where in clause in new CakePHP? I'm trying:

$restaurants->find()->where(['id' => $r_ids])->all();

Where $r_ids is array of ids I need in my query, but this doesn't work as expected.

Answer

ndm picture ndm · Nov 12, 2014

With CakePHP 3.x it's now necessary to either indicate the data type, which for an array of values need to have [] appended to the type:

$query = $articles
    ->find()
    ->where(['id' => $ids], ['id' => 'integer[]']);

or to explicitly make use of the IN keyword:

$query = $articles
    ->find()
    ->where(['id IN' => $ids]);

See also