假设我有$ var1和$ var2等变量。
假设我想要一个像
这样的查询$myQuery = DB::table('myTable')
->where('firstField', '=', $var1)
->where('secondField', '=', $var2)
->get();
当然,当我的变量为空时,这个不起作用。我想控制它们,如果它们为空则做一些事情。
我应该根据这些变量创建一个查询,并用它们保存的值过滤它们。
其他任何想法如何做到这一点?
答案 0 :(得分:4)
这是一个解决方案:
$results = DB::table('myTable')->where(function($query) use ($var1, $var2) {
if ( ! empty($var1)) {
$query->where('firstField', '=', $var1);
}
if ( ! empty($var2)) {
$query->where('secondField', '=', $var2);
}
})->get();
编辑:更正::在哪里 - >其中
答案 1 :(得分:1)
不确定这是您想要的,但您可以轻松地在多个步骤中构建查询"使用条件:
$query = DB::table('myTable');
if($var1 !== null){
$query->where('firstField', $var1);
}
if($var2 !== null){
$query->where('secondField', $var2);
}
$result = $query->get();
答案 2 :(得分:1)
例如,您可以这样做:
$myQuery = DB::table('myTable')
->where('firstField', '=', is_null($var1)?0:$var1)
->where('secondField', '=', is_null($var2)?0:$var2)
->get();