2016-08-03 3 views
0

ユーザー指定のフィルタを使用してクエリを実行し、結果をページ付けする必要があります。laravelページ区切りを使用しているときにURLにフィルタを保持する

私は私のコントローラで

public function index(Request $a) 
{ 


    $queryJobCards = JobCardHead::query(); 

    //Add sorting 

    $queryJobCards->orderBy('DateReqLatest','desc'); 

    //Add Conditions 

    if($a->has('CusJobNum')) { 
     $CusJobNum = $a -> get('CusJobNum'); 
     $queryJobCards->where('CusJobNum','=',$CusJobNum); 
    } 

    if($a->has('Status')) { 
     $Status = $a->get('Status'); 
     $queryJobCards->where('Status','=',$Status); 
    } 

    // get data and Paginate 

    $data = $queryJobCards->Paginate(20); 

    return view('JobsByDate.JobsByDate', compact('data')); 

} 

私は/ JobsByDate CusJobNum = 3224に行くなら、私はフィルタリングされた結果を得るが、私は次のページに移動しようとしたとき、私はフィルタを失い、? urlは/ JobsByDate?page = 2になります。

どうすればこの問題を解決できますか?

答えて

2

ページネーションリンクを挿入する際にappendメソッドを使用する必要があります。あなたのコメントどおり

{{ $users->appends(['CusJobNum' => 3224])->links() }} 

更新:
フィルタが存在している時はいつでもあなたのInputファサードにARAY ['CusJobNum' => 3224 ]を持つことになります。リンクを生成する際には、追加メソッドの引数にInput::get('CusJobNum')を挿入します。この方法では、フィルタが存在する場合にのみ追加されます。

{{ $users->appends(Input::get('CusJobNum'))->links() }} 
+0

フィルタが指定されていない場合はどうなりますか? –

+0

あなたは単に '{{$ users-> links()}}' – jaysingkar

+0

あなたのビューコードを投稿できますか? – jaysingkar