首页  >  文章  >  数据库  >  如何在 Laravel 中检索嵌套关系:跨多个中间表访问订阅事件的人员?

如何在 Laravel 中检索嵌套关系:跨多个中间表访问订阅事件的人员?

Linda Hamilton
Linda Hamilton原创
2024-11-17 02:38:03498浏览

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();

此查询急切加载与事件相关的城市、公司和人员。

或者,如果您只想从 person 表中选择特定字段:

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

此方法可确保仅检索指定字段,从而优化查询。

以上是如何在 Laravel 中检索嵌套关系:跨多个中间表访问订阅事件的人员?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn