如何在CakePHP查询中创建`IN`子句?

时间:2014-11-12 12:54:01

标签: cakephp cakephp-3.0 query-builder

如何在新的CakePHP中使用where子句?我在尝试:

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

$r_ids是我在查询中需要的ID数组,但这不能按预期工作。

4 个答案:

答案 0 :(得分:26)

使用CakePHP 3.x现在需要指示数据类型,对于值数组需要[]附加到该类型:

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

或明确使用IN关键字:

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

另见

答案 1 :(得分:0)

尝试使用CakePHP 3.x

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

答案 2 :(得分:0)

您还可以使用短语法:

    $result = $restaurants->find('all', 
            ['conditions' => ['id IN' =>$r_ids]]
        )->all();

答案 3 :(得分:0)

在Cakephp 3.x中,如果您有多个where条件,则查询将如下所示:

return $this
        ->find()
        ->contain([
            'XYZ.Articles',
            'YYY.Managers',
            'ZZZ.Readers',
        ])
        ->where([
            'ID' => $ids,
            'READER.STATUS' => $xyz,
        ],[
            'ID' => 'integer[]'
        ])
        ;