我有Locations
模型,它的hasMany Employees
-类似的Employees
属于关联Locations
这是好的,效果很好,但后来我看了一下增加PhoneNumbers
。 无论是Location
或Employee
可能有一个电话号码(办公室号码与个人号码)
从逻辑上讲:
Locations
的hasMany PhoneNumbers
(多个办公室线)和Employees
的hasMany PhoneNumbers
(家庭/细胞?)
然而,当你创建Laravel像这样的的hasMany关系,它增加了一个现场的PhoneNumbers
表。 所以我们现在有两个字段: location_id
和employee_id
我能得到这个,如果我做的工作location_id
和employee_id
空的,就像这样:
+----+--------------+-------------+-------------+
| id | number | location_id | employee_id |
+----+--------------+-------------+-------------+
| 1 | 800-555-0123 | 1 | null |
| 2 | 800-555-0124 | 1 | null |
| 3 | 800-555-0125 | 1 | null |
| 4 | 859-555-0199 | null | 1 |
...
然而,这并不规模非常好,如果我再补充一点可以拥有电话号码的新实体(客户?求职者?供应商?)
我怎样才能创建具有相同二次表的多个独立的许多一对多的关系?
注意:在这个例子中,我可以只创建一个phone_number
每个单独的表(场locations.phone_number
, employees.phone_number
等),但我想避免这种情况的原因有两个:
- 数据完整性(如果所有的电话号码都在一个共同的表可以很容易地确认没有输入重复的电话号码)
- 绑定到更复杂的模型(更换
PhoneNumber
与Image
,现在你有更多的数据处理)