Php Yii2查询或条件1列的多个值
我已经用Yii2框架制作了一个API。 但我不知道如何在我的陈述中使用OR条件 例如: 我想买所有宝马或道奇品牌的车 我尝试了以下方法:Php Yii2查询或条件1列的多个值,php,sql,yii2,Php,Sql,Yii2,我已经用Yii2框架制作了一个API。 但我不知道如何在我的陈述中使用OR条件 例如: 我想买所有宝马或道奇品牌的车 我尝试了以下方法: $query = Car::getCar($lang) ->where(['or', ['m.brand' => 'BMW'], ['m.brand' => 'DODGE']]) ->all(); 但这不起作用。 对于m.brand来说,我只有一个价值 因此: 很好用 我试着用一些其他的方法,但是我
$query = Car::getCar($lang)
->where(['or', ['m.brand' => 'BMW'], ['m.brand' => 'DODGE']])
->all();
但这不起作用。
对于m.brand来说,我只有一个价值
因此:
很好用
我试着用一些其他的方法,但是我没有成功。有人知道我做错了什么吗 编辑 getCar方法返回如下内容:
(new Query())->select(['a.auto_id'])->from('auto_new a')
编辑2
让它工作:
$query->andWhere(['or', ['m.brand' => 'BMW'], ['m.brand' => 'DODGE']])
如果我能很好地理解您,您可以使用以下内容:
Model::find()
->orWhere(['brand' => 'brand1'])
->orWhere(['id' => 'brand2'])
->all();
where()
可以使用数组沿
SELECT * FROM car WHERE brand in ('brand1', 'brand2');
使用此结构,您可以生成希望返回的品牌数组,然后使用以下ActiveQuery
$brands = ['BMW', 'DODGE'];
$query = Car::find()->where(['brand' => $brands])->all();
通过使用具有所需值的数组,您实际上可以将其简化很多:
$query = Car::getCar($lang)
->where(['m.brand' => ['BMW', 'DODGE']])
->all();
这将使用类似于
WHERE m.brand IN('BMW','DODGE')
的方法执行,该方法返回您要查找的结果。只要static方法getCar()
返回ActiveQuery
实例,该方法就可以工作。@Bizley我已经添加了getCar返回的内容。我不认为这是个问题,因为单个列的单个where参数可以很好地工作。这很奇怪,它应该可以工作。你说的“我不能让它工作”是什么意思?是否有任何错误或您只是看不到预期的结果?请使用或替换->all()来测试此版本代码>与->createCommand()->rawSql代码>并检查输出。它只返回所有BMW的结果。您可以粘贴此输出的结果吗?我已将where替换为orWhere,但它仍然只返回BMW的only。
$query = Car::getCar($lang)
->where(['m.brand' => ['BMW', 'DODGE']])
->all();