[Laravel] Eloquentとページネーション(3)

自力でページネーションの実装をおこなうには、大変工数がかかりますが、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



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム