在Laravel中定义多对多关系时,使用belongsToMany()或hasManyThrough()有什么区别?
示例: User
Account
Account_User
因此,User通过Account_User表与Account有很多关系 . 除了仅定义具有相关帐户的相关用户的数据透视表之外,它还存储 Account_User.role
字段,该字段确定给定用户在给定帐户中具有哪个角色 .
使用 User belongsToMany() Account
或 User hasManyThrough() Account Account_User
的含义是什么?或者这基本上是一样的吗?
当决定一个方法时,我想我应该使用相同的方法进行反向关系定义 .
1 回答
让's say you have two models, let'调用
A
和B
:如果
A
可能有多个项目B
,并且如果B
可能有多个项目A
(想像博客帖子/标签)你必须使用belongsToMany()
;现在假设您有3个模型,
A
,B
和C
.A
与B
相关,B
与C
相关 . 但是你需要访问与A
(超过B
)相关的所有C
,然后你需要使用hasManyThrough()
(想想countries
- >users
- >posts
,你需要特定country
的所有post
)hasManyThrough()
并不完全适用于多对多关系,它更像是一种捷径 .检查文档链接1,2(Laravel 4.2)或3,4(Laravel 5.x) .