|
|
1
29
has_和Own_to_many是指简单的多对多关系。 另一方面,has_many:through表示间接的一对多关系,或与属性的多对多关系。 如果你只是在寻找一个简单的多对多关系,我看不出有任何理由不使用has_和_-belies_-to_-many。 多对多关系示例: 用户属于零个或多个组,并且组具有零个或多个成员(用户)。 与属性的多对多关系示例: 用户属于零个或多个组,并且组中有零个或多个具有列组的成员。 例如,Alice可能是组A中的管理员,组B中的版主。您可以在联接表中保留此属性。 示例间接一对多关系: 一个类别有零个或多个子类别,每个子类别有零个或多个项目。 因此,一个类别通过其子类别拥有零个或多个项目。 考虑这些类别:
因此:
|
|
|
2
3
使用没有什么错
|
|
|
3
3
我永远不会使用HABTM,这不是因为我对优雅有任何顾虑,而是因为我可以想象,即使我现在看不到这一点,我仍然希望在未来为一段关系添加数据。由于懒惰,我希望能够将列添加到联接中,而不必重新处理关系,然后添加列。 |
|
|
4
3
我是这样想的。假设您已经发现需要一个多对多模型:
(x->1 y->1,2 z->2,3)
如果需要存储有关这些行(关系)的信息,请使用“通过”。 因此,如果您只是说人们[XYZ]拥有并属于项目[123],但不需要在项目1中对X个人说任何话,请使用HABTM。 如果您想说某人X拥有项目1并被分配了该项目 在指定日期 ,您突然对该特定关系有了一个正确的认识,并更好地使用HMT。 |
|
|
Zoli · Laravel 5.2:获取属于多个模型的模型 10 年前 |
|
|
erlandmuchasaj · 在HABTM复选框旁边显示图像 12 年前 |
|
|
Robin Winton · HABTM联接表的机械化批量分配错误 14 年前 |