2017-10-09 48 views
1

目前我正在使用nicolaslopezj/searchable作为我的laravel搜索。在简单代码中实现搜索和过滤的最佳方式是什么?

搜索很好,但我还想添加一个过滤器和我的过滤器,如性别,职业或地点。

例如,在这种情况下:

1 --- Jane Doe的--- F --- A类---美国

2 --- John Doe的--- ---中号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

我最优化代码:

$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); 
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); 
相关问题