嗨,我的问题很简单我想在yii2查询bulder上添加多个where条件,但我不知道在做什么.
我的代码就是这样
public function searchForTrip($params, $extraParams, $filter) {
$query = Boatinformation::find()
->where(['what_island' => $params['BoatinformationSearch']['what_island']])
->all();
if(isset($filter)) {
foreach ($filter as $key => $value) {
->andFilterWhere([$value => 1])
}
}
return $query;
}
Run Code Online (Sandbox Code Playgroud)
这不起作用
请有人帮助我
您可以通过多种方式进行操作,您可以在本文档中找到有用的指南http://www.yiiframework.com/doc-2.0/guide-db-query-builder.html
您可以使用字符串格式将条件指定为字符串:
$query->where('your_field1 =1 and your_field2 = 2');
Run Code Online (Sandbox Code Playgroud)
您可以使用哈希格式和
$query->where([
'your_field1' => 10,
'your_field2' => null,
'your_field3' => [4, 8, 15],
]);
Run Code Online (Sandbox Code Playgroud)
您可以使用运营商格式
$query->where(['and' , 'your_field1', 10, ]);
Run Code Online (Sandbox Code Playgroud)
你也可以使用
andWhere('your_field'=> $your_value ),
Run Code Online (Sandbox Code Playgroud)
小智 5
你应该写一些类似的东西
public function searchForTrip($params, $extraParams, $filter) {
$query = Boatinformation::find()
->where(['what_island' => $params['BoatinformationSearch']['what_island']])
if(isset($filter)) {
foreach ($filter as $key => $value) {
$query->andFilterWhere([$value => 1])
}
}
return $query;
}
Run Code Online (Sandbox Code Playgroud)
$query->andFilterWhere() 如果 $value 存在,则添加 where 条件,
$query->andWhere() 添加 where 条件总是
如果你想返回对象而不是查询,你应该返回 $query->all();