まず、リレーションシップをページネーションするためには、Eloquentのpaginate()
メソッドを使用します。このメソッドは、クエリ結果をページごとに分割し、指定されたページ番号の結果を返します。
例えば、User
モデルとPost
モデルの間には、1対多のリレーションシップがあるとします。ユーザーの投稿をページネーションするには、以下のようなコードを使用します。
$user = User::find($userId);
$posts = $user->posts()->paginate(10);
上記のコードでは、User
モデルのposts
メソッドを呼び出して、ユーザーに関連する投稿のクエリビルダーを取得しています。そして、paginate()
メソッドを使用して、ページごとに10件の結果を取得しています。
取得したページネーションの結果をビューに渡すには、以下のようにします。
return view('posts.index', ['posts' => $posts]);
ビューファイルでは、$posts
変数をループして投稿を表示することができます。
@foreach ($posts as $post)
// 投稿の表示
@endforeach
// ページネーションリンクの表示
{{ $posts->links() }}
上記のコードでは、$posts
変数をループして投稿を表示し、$posts->links()
メソッドを使用してページネーションリンクを表示しています。
これで、Laravelでリレーションシップをページネーションする方法についての基本的な理解ができました。さらに詳細な操作やカスタマイズについては、Laravelの公式ドキュメントを参照してください。