我是初学者,目前正在创建一个需要多条件查询的laravel项目:
查看图层示例
这三个条件中的每一个都可能是空白的。
如果一个为空,则相应的控制器在查询数据库时不应添加“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中,我该如何解决这个问题呢?
答案 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'
希望这有帮助。