Laravel 複数テーブル結合:クエリの書き方と実践
Laravelで複数のテーブルを結合して検索するには、Eloquent ORMを使用することができます。以下に例を示します:
$users = DB::table('users')
->join('posts', 'users.id', '=', 'posts.user_id')
->join('comments', 'posts.id', '=', 'comments.post_id')
->select('users.*', 'posts.title', 'comments.comment')
->get();
この例では、最初にユーザーテーブルを選択し、投稿テーブルとコメントテーブルと結合し、取得したいフィールドを選択しました。最後に、get()メソッドを使用して結果セットを取得しました。
DBクエリービルダーを使用する代わりに、Eloquentリレーションを使って複数のテーブルを結合して検索することもできます。たとえば、Userモデル、Postモデル、およびCommentモデルがある場合、それらの間の関係を定義して、Eloquentリレーションを使用して検索することができます。以下は例です:
$users = User::with('posts.comments')->get();
この例では、postsとcommentsの関係をロードするためにwithメソッドを使用します。これにより、すべてのユーザーとそれに関連する投稿やコメントが返されます。