在Laravel中定义多对多关系时,使用belongsToMany()或hasManyThrough()有什么区别?
例:User
Account
Account_User
因此,用户通过Account_User表与Account有多对多关系。除了仅是定义具有相关帐户的相关用户的数据透视表之外,它还存储了Account_User.role
字段,该字段确定给定用户在给定帐户中的角色。
使用User belongsToMany() Account
或User hasManyThrough() Account Account_User
意味着什么?还是基本相同?
在确定方法时,我想我应该对反向关系定义使用相同的方法。
最佳答案
假设您有两个模型,我们分别称为A
和B
:
如果A
可能包含一项以上的B
,
并且
如果B
可能包含一项以上的A
(就像博客文章/标签一样)
您必须使用belongsToMany()
;
现在假设您有3个模型,A
,B
和C
。A
与B
相关,而B
与C
相关。但是您需要访问所有与C
相关的A
(通过B
),然后您需要使用hasManyThrough()
(就像countries
-> users
-> posts
一样,您需要来自特定post
的所有country
)hasManyThrough()
并非完全用于多对多关系,它更像是一种捷径。
检查文档链接1,2(Laravel 4.2)或3,4(Laravel 5.x)。
关于orm - Laravel中的多对多关系:belongsToMany()与hasManyThrough(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21699050/