Laravel5.1如何使用if子句进行多条件查询

时间:2016-03-19 09:52:59

标签: laravel-5.1

我是初学者,目前正在创建一个需要多条件查询的laravel项目:

查看图层示例

enter image description here

这三个条件中的每一个都可能是空白的。

如果一个为空,则相应的控制器在查询数据库时不应添加“where子句”。

我知道在java中,我可以将if子句应用于此:

String sql = "select field from table where 1 = 1";

if(a!=null&&!a.isEmpty())
  sql+=" and a = '"+a+"'";

then execute sql......

但是在laravel中,我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

你可以使用Laravel Eloquent ORM 而不是直接sql,假设你有一个名为Test的模型:

$wheres = [];
$q = new Test();

if( !empty($input_1) )
      $wheres['table_field_1'] = $input_1;

if( !empty($input_2) )
      $wheres['table_field_2'] = $input_1;

....

foreach ( $wheres as $k => $v )
{
    if ($k == 'userName')
         $q = $q->where('userName', 'LIKE', '%'.$userName.'%');
    else
         $q = $q->where($k, $v);
}

return $q->orderBy('created_at', 'desc')->get(); //And you could use eloquent functions

这将生成查询:

SELECT * FROM test WHERE table_field_1=$input_1 AND table_field_2=$input_2... 
ORDER BY 'created_at'

希望这有帮助。