Yii2 查询 OR 条件 1 列的多个值

Wou*_*den 4 php sql yii2

我用 Yii2 框架制作了一个 API。但我不知道如何在我的语句中使用 OR 条件。

例如:我想要获得所有品牌为 BMW 或 DODGE 的汽车。

我尝试过以下方法:

$query = Car::getCar($lang)
         ->where(['or', ['m.brand' => 'BMW'], ['m.brand' => 'DODGE']])
         ->all();
Run Code Online (Sandbox Code Playgroud)

但这行不通。我只能让它与 m.brand 的一个值一起工作。

所以:

$query = Car::getCar($lang)
         ->where(['m.brand' => 'BMW'])
         ->all();
Run Code Online (Sandbox Code Playgroud)

效果很好。

尝试过其他一些方法,但我无法使其发挥作用。
有谁知道我做错了什么?

编辑 getCar 方法返回类似以下内容:

(new Query())->select(['a.auto_id'])->from('auto_new a') 
Run Code Online (Sandbox Code Playgroud)

编辑2 让它可以使用:

$query->andWhere(['or', ['m.brand' => 'BMW'], ['m.brand' => 'DODGE']])
Run Code Online (Sandbox Code Playgroud)

小智 5

实际上,您可以通过使用包含所需值的数组来简化它:

$query = Car::getCar($lang)
    ->where(['m.brand' => ['BMW', 'DODGE']])
    ->all();
Run Code Online (Sandbox Code Playgroud)

这将执行类似的操作WHERE m.brand IN ('BMW', 'DODGE'),返回您正在寻找的结果。