繁体   English   中英

如何处理多个多对多关系

[英]How to handle multiple many to many relationships

我有一个 Laravel 项目,其中可能存在多个多对多关系,但我觉得在正确使用数据透视表方面我正在绕圈子。

实体如下:

  • 中心:即将开业的办公室,有名称、位置、邮政编码、开业日期等信息
  • 任务:中心开通前必须完成的任务,包含名称、部门、中心类型等信息
  • 部门:一个部门代表一个关键领域,例如 IT、市场营销、销售等。每个任务都会引用一个部门。
  • 用户:用户是系统的用户,属于一个部门,可以完成任务。

注意事项:

  • 一个部门有用户,所以用户会有一个 department_id
  • 一个任务有一个部门,所以也会有一个 department_id
  • 一个中心有部门,所以一个 pivot 叫做 center_department,有 center_id 和 department_id
  • 用户有任务分配给他们,但只有属于中心的任务

底部的陈述是我要绕圈子的地方,因为:

  • 将任务分配给一个中心,这很好,因为您可以使用 center_id 和任务 id 制作像 center_task 这样的表
  • 用户有任务分配给他们,但是,是否可以有一个具有 user_id 和 center_task_id 的 task_user 表,实际上是一个使用另一个 pivot 表的 pivot 表?

这是因为用户不能直接分配给任务,他们只能分配给中心内的任务,因为任务与中心具有多对多关系。

如果我只使用任务 ID 分配一个用户,他们将被分配到每个相关中心的该任务。

那么,再次拥有一个使用另一个 pivot 表的 pivot 表是否可以,或者这是否显示了我建议的结构的问题?

预期流量

  • 用户创建任务,为其分配部门和类型,以便该任务仅与特定部门和中心类型相关。
  • 用户可以将中心内的任务分配给与任务部门相关的部门中的用户
  • 然后,中心的任务将有一个受让人和一个截止日期

理论上,我最终会得到一个 pivot 表,该表具有以下内容:

  • 用户身份
  • center_task_id
  • 最后期限
  • date_completed

本质上我只是觉得我连接了太多的部分?

Laravel 为您进行链接,只需在您的模型中使用(在这种情况下) morphToMany()morphedByMany()来建立两个表之间的关系。 有一个非常好的 Laracast 和一个非常好的文档。 我在下面链接了这个:

Laracast 视频很好地解释了多对多关系

Laravel Eloquent ORM 的文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM