[Laravel] Eloquentとページネーション(3)
- 2020年11月27日
- 技術情報
自力でページネーションの実装をおこなうには、大変工数がかかりますが、Laravelフレームワークが用意しているページネーションを使用することで工数が大幅に軽減できます。
今回はLaravelフレームワークのページネーションの実装方法を紹介したいと思います。本記事は前回の「[Laravel] Eloquentとページネーション(2)」の続きになります。
ページネーションの使用
前記事では、Laravel標準のO/Rマッパー「Eloquent」を使用したデータ取得方法を紹介しました。
「Eloquent」でデータ取得するにはgetメソッドを使用するように紹介しましたが、その部分をpaginateメソッドに書き換えるだけでページネーションが実装できます。
//ページネーションを使用しない例:
$users = DB::table('users')->get();
//ページネーションを使用した例:
$users = DB::table('users')->paginate(15);
paginateメソッドの引数の数値は1ページあたりに表示する件数を指定します。
上記の例では1ページあたり15件のレコードを表示するという意味になります。
paginateメソッドを使用するだけで、前回の記事で紹介したoffsetやlimitの設定も表示される各ページに対応した設定に自動的に調整されます。
paginateメソッドは、前回の記事で紹介したwhereでの検索条件設定などとも組み合わせて使用することが可能です。
URLに含まれるgetパラメータ(例:「?page=2」)は表示するページ番号を示します。
getパラメータ(page)が存在しない場合は1ページ目を表示します。
バックエンドのページネーションの基本設定は以上です。
次にフロントエンド側の設定を見ていきます。
ページネーションの表示
viewで一覧画面を表示することを想定します。
viewの作成にはBladeテンプレートエンジンを使用します。
以下のようにリストをforeachでループしながら一覧画面を生成します。
<div class="container">
@foreach ($users as $user)
{{ $user->name }}
@endforeach
</div>
上記のリストにページネーションのリンクの追加をおこなうには
以下のように記載をおこないます。
{{ $users->links() }}
上記の記載をおこなうだけで、下図のような表示になるようにページネーションのhtmlが自動生成されます。

表示されるページ番号も取得するレコード件数によって自動調整されます。
次回はページネーションのデザインをカスタマイズする方法を紹介します。
金曜日担当:nishida
nishida at 2020年11月27日 10:00:32