2015-07-31 10 views
16

Sie haben viel zu lange daran gearbeitet, ohne Ergebnisse. Ich habe versucht.Laravel 5.1, die aktuelle Seite für Paginierung angeben

`\Illuminate\Pagination\Paginator::setCurrentPage($current_page);` 

kehrt Call to protected method Illuminate\Pagination\Paginator::setCurrentPage()

\Paginator::setCurrentPage($current_page);

kehrt Call to protected method Illuminate\Pagination\Paginator::setCurrentPage()

\DB::getPaginator()->setCurrentPage($current_page);

kehrt call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Database\MySqlConnection' does not have a method 'getPaginator'

$tmp = new Post(); $tmp->getConnection()->setCurrentPage($current_page);

kehrt call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Database\MySqlConnection' does not have a method 'getPaginator'

Wie ich die Seite angeben? Ich muss es manuell angeben.

ich es so einfach wie $model->find()->paginate($per_page, $page)

+1

ich auch dieses Problem habe, ich werde Sie wissen lassen, wenn ich es – Adam

Antwort

20

Sie $users in Ihrem UserController zu Paginieren haben gehofft hatte Angenommen, könnten Sie tun:

public function index() 
{ 
    $currentPage = 3; // You can set this to any page you want to paginate to 

    // Make sure that you call the static method currentPageResolver() 
    // before querying users 
    Paginator::currentPageResolver(function() use ($currentPage) { 
     return $currentPage; 
    }); 

    $users = \App\User::paginate(5); 

    return view('user.index', compact('users')); 
} 

Ich glaube, dies zu Laravel gilt 5.0 und höher. Muss das überprüfen.

+2

trainieren musste ich es laufen mit '\ Illuminate \ Pagination \ Paginator :: currentPageResolver ', andernfalls wurde nach der Klasse im aktuellen Namensraum gesucht. Mit '\ Paginator 'hat es mir gesagt, dass die Klasse nicht gefunden wurde. So funktioniert es! – Shane

+3

Shane, du hättest die Klasse an der Spitze deines Controllers "importieren" können: 'Illuminate \ Pagination \ Paginator verwenden;' – kishanterry

+0

Perfekt. Vielen Dank. –

23

Die Builder Klasse hat:

public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) 

Sie können auch anrufen

Model::find(...)->paginate($per_page, ['*'], 'page', $page); 
+2

Einfacher und klarer Ansatz. – EGurelli

+0

Ja, dieser Ansatz ist besser. Danke @PATROMO. – GAD

+0

Ehrfürchtig. Danke @Patromo. –