2016-08-03 20 views
0

Ich möchte eine Abfrage mit einem benutzerdefinierten Filter durchführen und dann die Ergebnisse Paginieren.Filter in URL bei Verwendung von Laravel Paginierung

In meinem Controller habe ich:

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

} 

Wenn ich gehe zu/JobsByDate CusJobNum = 3224 dann bekomme ich die gefilterten Ergebnisse, aber wenn ich dann auf die nächste Seite zu gehen versuchen, verliere ich den Filter und das? URL wird/JobsByDate? page = 2.

Wie kann ich das beheben?

Antwort

2

Sie müssen die Methode append verwenden, während Sie den Paginierungslink einfügen.

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

-Update nach Ihren Kommentar:
Sie eine aray ['CusJobNum' => 3224 ] in Ihrer Input Fassade haben, wenn die Filter vorhanden ist. Fügen Sie während des Generierens der Verknüpfung das Argument Input::get('CusJobNum') in das Argument Ihrer Append-Methode ein. Auf diese Weise wird es nur angehängt, wenn der Filter vorhanden ist.

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

Was ist, wenn kein Filter angegeben ist? –

+0

sie würden Sie einfach '{{$ users-> links()}}' – jaysingkar

+0

könnten Sie Ihre Ansicht Code veröffentlichen? – jaysingkar