【发布时间】:2017-09-16 18:47:39
【问题描述】:
我想在这种情况下询问最佳策略(使用 MySQL DB):
我有一个用户模型/表。用户可以是 3 种不同的类型:Admin、Owner 和 Worker。
- 所有者有很多地点
- 该地点有许多工人
- 工作人员属于某个位置
我看到的第一个选项:
所有者和工作人员扩展用户模型是否有意义,因为它们具有公共字段并在用户表中添加“角色”字段?
为 Owner 和 Worker 创建另外 2 个表是否正确?
Eloquent 将如何处理这种情况下的关系?
第二个选项(更简单但...):
Admin、Owner、Worker 是 3 个不同的模型/表
然后我想获取如下数据:
- $location->owner() // 获取此位置的“所有者”角色的用户
- $location->workers() // 获取此位置的“workers”角色的用户
- $owner->workers() // 获取与所有者相关的工人
【问题讨论】:
-
我会说保留单个用户表,并将角色中间表用于 belongsToMany 关系,这样将来如果用户可以拥有多个角色,它将被处理。并且您可以在用户模型上定义 location 和 worker belongsTo 关系,它本身没有问题,如果该关系没有其他角色的数据,它将返回 null。
-
谢谢,但是如何设置模型才能做到:$location->workers() 或 $owner->workers()?
标签: laravel eloquent laravel-eloquent