Laravel查询构建变量

时间:2015-02-10 13:11:18

标签: php mysql laravel eloquent

假设我有$ var1和$ var2等变量。

假设我想要一个像

这样的查询
$myQuery = DB::table('myTable')
           ->where('firstField', '=', $var1)
           ->where('secondField', '=', $var2)
           ->get();

当然,当我的变量为空时,这个不起作用。我想控制它们,如果它们为空则做一些事情。

我应该根据这些变量创建一个查询,并用它们保存的值过滤它们。

其他任何想法如何做到这一点?

3 个答案:

答案 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();