ホームページ >データベース >mysql チュートリアル >Laravel で入れ子になった関係を取得する方法: 複数の中間テーブルにわたるイベントにサブスクライブしたユーザーにアクセスする?

Laravel で入れ子になった関係を取得する方法: 複数の中間テーブルにわたるイベントにサブスクライブしたユーザーにアクセスする?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-17 02:38:03576ブラウズ

How to Retrieve Nested Relationships in Laravel: Accessing Persons Subscribed to an Event Across Multiple Intermediary Tables?

Laravel のネストされたリレーションシップ

ネストされたリレーションシップを使用すると、データ構造の複数レベルの深さのモデルにアクセスできます。これは、特に複雑な関係の場合、Laravel で達成するのが難しい場合があります。

問題ステートメント:

複数の中間テーブルがあるにもかかわらず、イベントに登録した人のリストを取得するイベントモデルと人物モデルの間。

データベース構造:

データベース構造には、イベント、都市、企業、人物のテーブルが含まれます。

モデル関係:

  • イベント: 市に属します
  • 市: 多くの企業があり、多くのイベントがあります
  • 会社: 市に属しています、多数の人がいます
  • 人: 会社に属し、多くのイベントに属しています (EventScore を通じて)

失敗した試行:

の試みwith() メソッドと whereHas() メソッドを使用しても、望ましい結果が得られませんでした。

解決策:

この問題を解決するには、次のクエリを使用します:

return Event::with('city.companies.persons')->get();

このクエリは、イベントに関連する都市、企業、および人物を積極的に読み込みます。

また、人物テーブルから特定のフィールドのみを選択したい場合は、次のようにします。

return Event::with(['city.companies.persons' => function ($query) {
    $query->select('id', '...');
}])->get();

このアプローチにより、指定されたフィールドのみが確実に取得され、クエリが最適化されます。

以上がLaravel で入れ子になった関係を取得する方法: 複数の中間テーブルにわたるイベントにサブスクライブしたユーザーにアクセスする?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。