在Laravel中定义多到多的关系时,使用belongsToMany()或hasManyThrough()有什么区别?
例子:User
Account
Account_User
因此,用户通过Account_User表拥有多到多的帐户关系。除了定义具有相关帐户的相关用户的枢轴表之外,它还存储一个Account_User.role
字段,该字段确定给定用户在给定帐户中的角色。
使用User belongsToMany() Account
或User hasManyThrough() Account Account_User
意味着什么?或者这基本上是一样的?
当决定一个方法时,我想我应该用同样的方法来定义反向关系。
发布于 2014-02-11 10:36:42
发布于 2019-11-12 09:24:55
虽然@Arda的回答是完全正确的,但我发现自己需要一些时间来消化它。因此,我试图用更简单的术语来表达同样的观点。
当您有类似于以下场景的内容时,hasManyThrough
是有用的:
Company
一对多Office
和Office
一对多Employee
.如果你想找一家公司的所有员工,你需要:// Company Model
public function employees()
{
return $this->hasManyThrough('App\Employee', 'App\Office');
}
另一方面,belongsToMany
是有用的,当你有一个多到多的关系与枢轴表之间。例如:
Film
多到多Category
。如果您想要获取给定影片的所有类别,则需要:// Film Model
public function categories()
{
return $this->belongsToMany('App\Category', 'pivot_table_name');
}
考虑到所讨论的场景,belongsToMany
是将许多Users
连接到多个Accounts
所需的关系。不能应用hasManyThrough
。
https://stackoverflow.com/questions/21699050
复制相似问题