首页 文章

Laravel中的多对多关系:belongsToMany()vs. hasManyThrough()

提问于
浏览
13

在Laravel中定义多对多关系时,使用belongsToMany()或hasManyThrough()有什么区别?

示例: User Account Account_User

因此,User通过Account_User表与Account有很多关系 . 除了仅定义具有相关帐户的相关用户的数据透视表之外,它还存储 Account_User.role 字段,该字段确定给定用户在给定帐户中具有哪个角色 .

使用 User belongsToMany() AccountUser hasManyThrough() Account Account_User 的含义是什么?或者这基本上是一样的吗?

当决定一个方法时,我想我应该使用相同的方法进行反向关系定义 .

1 回答

  • 13

    让's say you have two models, let'调用 AB

    如果 A 可能有多个项目 B ,并且如果 B 可能有多个项目 A (想像博客帖子/标签)你必须使用 belongsToMany() ;

    现在假设您有3个模型, ABC .

    AB 相关, BC 相关 . 但是你需要访问与 A (超过 B )相关的所有 C ,然后你需要使用 hasManyThrough() (想想 countries - > users - > posts ,你需要特定 country 的所有 post

    hasManyThrough() 并不完全适用于多对多关系,它更像是一种捷径 .

    检查文档链接12(Laravel 4.2)或34(Laravel 5.x) .

相关问题