在 Laravel 中,在多個資料庫表之間導航複雜關係可能是一項艱鉅的任務。這個問題體現了這樣一個挑戰:當存在多個中間表時檢索與事件相關的人員。
資料庫架構由四個表組成:事件 、城市、公司,以及人。 Event 模型與City 具有多對一關係,City 與活動Company 和活動Company 和活動Company 和活動Company 和 。
公司有一對多關係。 巢狀關係查詢使用者需要擷取
人的查詢。為此,我們需要瀏覽城市和公司關係。
return Event::with('city.companies.persons')->get();解決方案
最簡單的解決方案是使用with 方法來急切加載嵌套關係: 此查詢檢索所有事件事件及其關聯的城市
,人員。
字段選擇return Event::with(['city.companies.persons' => function ($query) { $query->select('id', 'firstname'); }])->get();
如果您只需要人員表中的特定字段,例如ID 和名字,使用閉包來修改查詢:
這個修改後的查詢只檢索指定欄位的persons
。return Event::whereHas('city.companies.persons', function ($query) { $query->where('company_id', $company_id); })->get();
避免急切加載如果不需要急切加載,可以使用 whereHas方法根據存在來約束查詢相關模型的數量:此查詢檢索事件
至少有一個人與特定公司相關聯。以上是如何處理 Laravel 中的嵌套關係:檢索與事件相關的人員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!