目前我正在使用nicolaslopezj/searchable进行我的laravel搜索。
搜索很好,但我想添加一个过滤器和我的过滤器,如性别,类或位置。
例如在这种情况下:
1 --- Jane Doe --- F --- A级---美国
2 --- John Doe --- M --- B级--- PH
我目前的代码是这样的:
if (isset ($keyword) )
$voters = Voter::search($request->keyword)->paginate(10);
if (isset ($keyword) && isset($request->sex))
$voters = Voter::search($request->keyword)->where('sex', $request->sex)->paginate(10);
if ( !isset($keyword) && isset($request->sex))
$voters = Voter::where('sex', $request->sex)->paginate(10);
if( isset($keyword && !isset($request->sex)
$voters = Voter::search($request->keyword)->paginate(10);
那么任何想法如何最大限度地减少很多条件?是否有单行代码/查询?
答案 0 :(得分:1)
您可以使用Model::query()
和Request::has()
方法检查请求..例如..
$voters = Voter::query();
if ($request->has('keyword'))
$voters = $voters->search($request->keyword);
if ($request->has('sex'))
$voters = $voters->where('sex', $request->sex);
$voters = $voters->paginate(10);
答案 1 :(得分:0)
我优化了你的代码:
$voters = Voter::on();
if (isset ($request->keyword))
$voters = $voters->search($request->keyword);
if (isset($request->sex))
$voters = $voters->where('sex', $request->sex);
$voters = $voters->paginate(10);