在 Laravel 中,在多个数据库表之间导航复杂关系可能是一项艰巨的任务。这个问题体现了这样一个挑战:当存在多个中间表时检索与事件相关的人员。
数据库架构由四个表组成:事件 、城市、公司,以及人。 Event 模型与 City 具有多对一关系,City 与 Company 和活动。 公司与人有一对多关系。
嵌套关系查询用户需要检索人的查询 通过 ID 订阅了 活动。为此,我们需要浏览城市和公司关系。
解决方案最简单的解决方案是使用 with 方法来急切加载嵌套关系:return Event::with('city.companies.persons')->get();
事件及其关联的城市, 公司和人员。
字段选择如果您只需要人员表中的特定字段,例如ID 和名字,使用闭包来修改查询:
return Event::with(['city.companies.persons' => function ($query) { $query->select('id', 'firstname'); }])->get();
persons。
避免急切加载如果不需要急切加载,可以使用 whereHas 方法根据存在来约束查询相关模型的数量:return Event::whereHas('city.companies.persons', function ($query) { $query->where('company_id', $company_id); })->get();
事件至少有一个人与特定公司相关联。
以上是如何处理 Laravel 中的嵌套关系:检索与事件相关的人员?的详细内容。更多信息请关注PHP中文网其他相关文章!