2017-10-09 10 views
1

現在、私はlaravel Searchにnicolaslopezj/searchableを使用しています。シンプルなコードで検索とフィルタを実装する最善の方法は何ですか?

検索は良いですが、フィルタとセックス、クラス、場所などのフィルタも追加します。この場合、例えば

1 ---ジェーンドゥ--- F ---クラスA --- USA

2 ---ジョン・ドウ--- M ---だから、

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); 

条件の多くを最小化するためにどのように任意のアイデア:クラスB --- PH

私の現在のコードは次のようなものでしょうか?これには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); 
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); 
関連する問題