フレームワークのページネーションって設定が面倒なイメージが強かったけど、Laravelのページネーションは簡単過ぎて感動した。
コントローラ
paginateメソッドの引数に1ページに表示したい件数を設定する。
今回は、User::all()で全件取得していたところを User::paginate(15) に書き換えただけ。
class UserController extends Controller { public function index() { // 会員一覧を15件区切りで取得する // $users = User::all(); allをpaginateに書き換える $users = User::paginate(15); // ビューに取得結果を渡す return view('user.index', ['users' => $users]); } }
ビュー
あとはビューテンプレートでlinksメソッドを呼べば完成!
ページネーションのHTMLを表示する
{{ $users->links() }}
GETパラメータに任意のパラメータを追加する
下記の場合、リンクURLが「?name=田中&page=2」のようになる。
{{ $users->appends(['name' => '田中'])->links() }}
その他のページネーション情報を取得する
{{ $users->count() }} 現在のページに表示されている件数
{{ $users->perPage() }} 1ページに表示する件数(設定値)
{{ $users->total() }} 要素の合計件数
{{ $users->currentPage() }} 現在のページナンバー
{{ $users->lastPage() }} 最後のページナンバー
{{ $users->firstItem() }} 現在表示しているページの最初の要素のID
{{ $users->lastItem() }} 現在表示しているページの最後の要素のID
{{ $users->hasMorePages() }} 次のページがあるかどうか
{{ $users->nextPageUrl() }} 次のページのURL
{{ $users->previousPageUrl() }} 前のページのURL