【Laravel】paginationの実装

ページネーションを実装しよう

LaravelはPHPベースのウェブアプリケーション開発フレームワークで、データのページネーションを簡単に実装できる多くの機能を提供しています。
この記事では、Laravelでページネーションを実装する方法について詳しく説明します。

ページネーションの基本

ページネーションは、大量のデータを複数のページに分割し、ユーザーに分かりやすく表示するための方法です。
Laravelでは、Eloquentモデルやクエリビルダを使用してデータベースからデータを取得し、paginateメソッドを使用してページネーションを有効にすることができます。

$items = DB::table('items')->paginate(10);

このコードでは、itemsテーブルから10個のアイテムを1ページに表示するためのページネーションが有効になります。
ページネーション結果は、Bladeビューで表示することができます。

Bladeビューでページネーションを表示する

Bladeビューを使用して、ページネーションを表示します。
以下は、簡単な例です。

@foreach ($items as $item)
    <!-- アイテムを表示 -->
@endforeach

{{ $items->links() }}

$itemsはページネーションされたデータを表しており、linksメソッドを呼び出すことでページネーションリンクを表示します。
デフォルトでは、ページネーションはBootstrapスタイルのリンクとして表示されますが、カスタマイズも可能です。

カスタマイズ

Laravelのページネーションはカスタマイズ可能で、アプリケーションのデザインに合わせてスタイルを変更できます。
カスタマイズするためには、BladeビューでPaginatorファサードを使用することができます。

{{ $items->onEachSide(2)->links('pagination.custom') }}

この例では、onEachSideメソッドを使用して、現在のページの前後に2つのページリンクを表示するようにページネーションを設定しています。
さらに、linksメソッドの引数としてカスタムページネーションビューを指定しています。

ページネーションのカスタムビュー

カスタムページネーションビューを作成するには、resources/viewsディレクトリにpaginationディレクトリを作成し、その中にカスタムビューファイルを配置します。
例として、custom.blade.phpファイルを作成することができます。このファイルには、ページネーションリンクのHTML構造を定義します。

<div class="pagination">
    <span class="pagination__prev">{{ $paginator->previousPageUrl() }}</span>
    <span class="pagination__next">{{ $paginator->nextPageUrl() }}</span>
</div>

まとめ

Laravelのページネーションは、大量のデータを効果的に表示するための強力なツールです。
基本的なページネーションの実装からカスタマイズまで、さまざまな方法でページネーションを活用できます。
アプリケーションのデザインに合わせてページネーションを調整し、ユーザーエクスペリエンスを向上させましょう。
Laravelのページネーションに関する詳細な情報は、公式ドキュメントを参照してください。