カテゴリ: Laravel 更新日: 2025/12/25

LaravelのEloquentでpaginateを使ったページネーションの実装方法

LaravelのEloquentでpaginateを使ったページネーションの実装方法
LaravelのEloquentでpaginateを使ったページネーションの実装方法

先生と生徒の会話形式で理解しよう

生徒

「Laravelでたくさんのデータを表示するときに、ページごとに分けたいんですが、どうしたらいいですか?」

先生

「その場合は、Eloquentのpaginateメソッドを使うと簡単にページネーションを実装できます。」

生徒

「ページネーションって何ですか?」

先生

「ページネーションとは、データをいくつかのページに分けて表示することです。大量のデータを一度に表示せず、ページごとに少しずつ表示することで、見やすく管理しやすくなります。」

生徒

「具体的にはどうやって書くんですか?」

先生

「それでは、基本的な書き方を見ていきましょう。」

1. paginateの基本的な使い方

1. paginateの基本的な使い方
1. paginateの基本的な使い方

Eloquentでページネーションを使うには、paginateメソッドを呼び出します。例えば、usersテーブルから1ページに10件ずつユーザーを取得する場合は次のように書きます。


use App\Models\User;

$users = User::paginate(10);

ここで指定した数字「10」は、1ページに表示する件数です。paginateは自動でページ数を計算し、現在のページに応じたデータを取得してくれます。

2. Bladeテンプレートでページネーションを表示する

2. Bladeテンプレートでページネーションを表示する
2. Bladeテンプレートでページネーションを表示する

取得したデータをビューで表示するときは、通常のループ処理で表示したあと、links()メソッドを呼ぶことでページリンクを生成できます。


@foreach ($users as $user)
    <p>{{ $user->name }}({{ $user->age }}歳)</p>
@endforeach

{{ $users->links() }}

これにより、「前へ」「次へ」やページ番号のリンクが自動で生成され、ユーザーは簡単にページを切り替えることができます。

3. ページネーションで並び順を指定する

3. ページネーションで並び順を指定する
3. ページネーションで並び順を指定する

ページネーションと一緒に並び順を指定したい場合は、orderByメソッドをチェーンして使うことができます。例えば、年齢順でページネーションしたい場合は次のように書きます。


$users = User::orderBy('age', 'asc')->paginate(10);

これにより、年齢が若い順に10件ずつページ分けして取得できます。

4. ページネーションの便利なポイント

4. ページネーションの便利なポイント
4. ページネーションの便利なポイント

ページネーションを使うことで、大量のデータを扱うときのパフォーマンスが向上します。全件取得すると時間がかかるデータも、ページごとに少しずつ取得することで負荷を減らせます。

また、Eloquentのpaginateはページ番号や現在のページ情報も自動で取得してくれるため、ビューでの表示も簡単です。

さらに、simplePaginateメソッドを使うと「次へ」「前へ」のリンクだけを表示する簡易的なページネーションも実装可能です。これにより、リンクが少なくて済み、よりシンプルなUIになります。

5. 初心者でも押さえておきたいポイント

5. 初心者でも押さえておきたいポイント
5. 初心者でも押さえておきたいポイント

ページネーションは、ブログ記事一覧、商品一覧、ユーザー管理画面など、さまざまな場面で使います。Eloquentのpaginateを使うことでSQLを直接書かなくても簡単にページ分けができ、コードもスッキリします。

最初は1ページあたりの件数を決めて、links()でページリンクを表示する基本から始めましょう。慣れてきたら並び順や検索条件を組み合わせて、より実務的なページネーションを実装できるようになります。

これを覚えることで、ユーザーに見やすく、管理しやすいデータ表示が可能になり、Laravelアプリケーションの使いやすさを向上させることができます。

6. ページネーションで現在のページ情報を活用する

6. ページネーションで現在のページ情報を活用する
6. ページネーションで現在のページ情報を活用する

ページネーションでは、現在どのページを表示しているのかという情報も自動で管理されています。Eloquentのpaginateを使うと、現在のページ番号や全体のページ数といった情報を簡単に取得できます。

例えば、「全何件中の何件目を表示しているのか」を画面に表示したい場合でも、追加のSQLを書かずに対応できます。これにより、ユーザーは一覧の中で自分がどの位置を見ているのかを把握しやすくなります。

管理画面やデータ一覧では、こうした補足情報があるだけで操作性が大きく向上します。ページネーションは単なるページ分割だけでなく、ユーザー体験を高めるための重要な要素と言えるでしょう。

7. ページネーションと検索条件を組み合わせる考え方

7. ページネーションと検索条件を組み合わせる考え方
7. ページネーションと検索条件を組み合わせる考え方

実際のアプリケーションでは、ページネーション単体ではなく、検索条件や絞り込み条件と一緒に使われることがほとんどです。ユーザー名で検索した結果をページ分けしたり、特定の条件に一致するデータだけを一覧表示したりする場面はよくあります。

Eloquentでは、whereorderByなどの条件指定とpaginateを組み合わせることで、自然な形で検索結果のページネーションを実装できます。条件を先に指定し、その結果をページ分割するという流れを意識すると理解しやすくなります。

まずは基本的なページネーションをしっかり身につけ、その後に検索や絞り込みと組み合わせることで、より実践的な一覧画面を作れるようになります。

8. ページネーションを使った画面設計のポイント

8. ページネーションを使った画面設計のポイント
8. ページネーションを使った画面設計のポイント

ページネーションを導入するときは、1ページあたりの件数を適切に設定することも重要です。件数が多すぎると表示が重くなり、少なすぎるとページ切り替えが頻繁になってしまいます。

表示するデータの内容や利用シーンに応じて、ちょうどよい件数を選ぶことが大切です。例えば、管理画面では少し多めに、一般ユーザー向けの一覧では見やすさを重視して少なめに設定するなど、使い分けを意識するとよいでしょう。

Laravelのページネーションを正しく使いこなすことで、見やすく操作しやすい画面を構築でき、アプリケーション全体の品質向上につながります。

まとめ

まとめ
まとめ

ページネーションの全体像を振り返る

ここまで、LaravelのEloquentを使ったページネーションの実装方法について学んできました。大量のデータをそのまま一覧表示すると、画面が見づらくなったり、処理に時間がかかったりします。そうした問題を解決するために役立つのが、Eloquentのpaginateメソッドを使ったページネーションです。 ページネーションを導入することで、データを適切な件数ごとに分割して表示できるようになり、ユーザーにとっても操作しやすく、管理画面や一覧画面として非常に見やすい構成になります。Laravelでは、SQLを直接書かなくてもEloquentの機能を使うだけで、ページ番号の計算や取得件数の調整を自動で行ってくれる点が大きな魅力です。

paginateを使うメリット

paginateを使う最大のメリットは、実装の手軽さと可読性の高さです。モデルに対してpaginateを呼び出すだけで、現在のページに応じたデータを取得でき、Bladeテンプレートではlinksメソッドを呼ぶだけでページリンクを表示できます。 また、orderByと組み合わせることで、並び順を指定したページネーションも簡単に実装できます。年齢順、登録日順、更新日時順など、実務でよく使われる一覧表示にも柔軟に対応できるため、LaravelでWebアプリケーションを開発する上で欠かせない機能と言えるでしょう。

サンプルプログラムで再確認

ここで、今回学んだ内容を整理するために、基本的なページネーションのサンプルをもう一度確認しておきましょう。記事内で紹介した内容と同じ構成で、EloquentとBladeを使った例です。


use App\Models\User;

$users = User::orderBy('age', 'asc')->paginate(10);

@foreach ($users as $user)
    <p>{{ $user->name }}({{ $user->age }}歳)</p>
@endforeach

{{ $users->links() }}

このように、コントローラ側ではデータ取得とページ分割を行い、ビュー側ではデータ表示とページリンクの表示を担当させることで、役割が明確になり、保守しやすいコードになります。Laravelの設計思想に沿った書き方を意識することも、初心者から一歩成長するための重要なポイントです。

実務で意識したいポイント

実際の開発現場では、ページネーションに検索条件や絞り込み条件を組み合わせるケースが多くあります。ユーザー一覧で名前検索を行ったり、商品一覧でカテゴリごとに表示したりする場合でも、paginateはそのまま活用できます。 まずは基本の使い方をしっかり理解し、ページネーションの仕組みや流れを把握することが大切です。今回学んだ内容をベースに、少しずつ応用していくことで、より実践的なLaravelアプリケーションを作れるようになります。

先生と生徒の振り返り会話

生徒

「paginateを使うだけで、ページ分けがこんなに簡単にできるんですね。今まで全部のデータを表示していて、画面がごちゃごちゃしていました。」

先生

「そうですね。Laravelでは、よく使う処理があらかじめ用意されています。ページネーションもその一つで、初心者でも安心して使える機能です。」

生徒

「orderByと一緒に使えるのも便利だと思いました。並び順を変えるだけで、表示の印象がかなり変わりますね。」

先生

「その通りです。ユーザーにとって見やすい順番を意識することも大切です。ページネーションと並び順を組み合わせることで、実務でも使える一覧画面が作れます。」

生徒

「まずは今回の基本をしっかり身につけて、次は検索機能と組み合わせてみたいです。」

先生

「それは良いですね。paginateを理解できれば、Laravelでのデータ表示が一気に楽になります。ぜひ色々な画面で試してみてください。」

関連記事:
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.8
Java&Spring記事人気No8
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド