Laravel - リレーションシップのページネーション


まず、リレーションシップをページネーションするためには、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の公式ドキュメントを参照してください。