在定义Laravel中的多对多关系时,使用belongsToMany()或hasManyThrough()有什么区别?
例:
用户
帐户
Account_User
所以,用户通过Account_User表与Account有很多关系.除了定义具有相关帐户的相关用户的数据透视表之外,它还存储一个Account_User.role字段,它确定给定用户在给定帐户中的角色.
使用User belongsToMany()帐户或用户hasManyThrough()帐户Account_User有什么影响?还是这个本质上是一样的?
当决定一个方法时,我想我应该使用相同的方法来进行反向关系定义.
假设你有两个模型,我们来
调用A和B:
如果A可能有多个B项目,
并且
如果B可能有多个A的项目
(想像博客帖子/标签)
你必须使用belongsToMany();
现在我们假设你有3个模型,A,B和C.
A与B有关,B与C.相关.但您需要访问与A(B以上)相关的所有C,那么您需要使用hasManyThrough()
(想像国家 – >用户 – >帖子,您需要所有来自特定国家/地区的帖子)
hasManyThrough()不是完全意味着许多关系,它更像一个捷径.
检查文档链接,1,2(Laravel 4.2)或3,4(Laravel 5.x).