Laravel のネストされたリレーションシップ
ネストされたリレーションシップを使用すると、データ構造の複数レベルの深さのモデルにアクセスできます。これは、特に複雑な関係の場合、Laravel で達成するのが難しい場合があります。
問題ステートメント:
複数の中間テーブルがあるにもかかわらず、イベントに登録した人のリストを取得するイベントモデルと人物モデルの間。
データベース構造:
データベース構造には、イベント、都市、企業、人物のテーブルが含まれます。
モデル関係:
失敗した試行:
の試みwith() メソッドと whereHas() メソッドを使用しても、望ましい結果が得られませんでした。
解決策:
この問題を解決するには、次のクエリを使用します:
return Event::with('city.companies.persons')->get();
このクエリは、イベントに関連する都市、企業、および人物を積極的に読み込みます。
また、人物テーブルから特定のフィールドのみを選択したい場合は、次のようにします。
return Event::with(['city.companies.persons' => function ($query) { $query->select('id', '...'); }])->get();
このアプローチにより、指定されたフィールドのみが確実に取得され、クエリが最適化されます。
以上がLaravel で入れ子になった関係を取得する方法: 複数の中間テーブルにわたるイベントにサブスクライブしたユーザーにアクセスする?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。