我用 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'),返回您正在寻找的结果。