所以,我得到了两个名为Team
,User
的模型,其中User
与多个Teams
相关,Team
有多个Users
包括在内。这意味着我有一个名为team_user
的数据透视表。
我想从用户那里获取团队成员。
我的关系设置如下:
// In the User model
public function teams()
{
return $this->belongsToMany('App\Entities\Team');
}
// In the Team model
public function users()
{
return $this->belongsToMany('App\Entities\User');
}
如何从用户返回团队中的用户?
我已经尝试User::find(1)->teams()->users()
,但这不起作用..
我正在尝试返回这样的数组:
[
'teamName' => 'Team #1',
'users' => [
[
'username' => 'John Doe'
], [
'username' => 'John Doe #2'
]
],
'teamName' => 'Team #2',
'users' => [
[
'username' => 'Doe John'
], [
'username' => 'Doe John #2'
]
]
答案 0 :(得分:0)
首先,如果您的数据透视表名为team_user
而不是team_users
,则必须在您的关系中指定它:
// In the User model
public function teams()
{
return $this->belongsToMany('App\Entities\Team', 'team_user');
}
// In the Team model
public function users()
{
return $this->belongsToMany('App\Entities\User', 'team_user');
}
然后,您可以通过访问用户的teams()->get()
来检索这些团队,并添加with('users')
以急切加载每个团队的users
关系:
$teams = User::find(1)->teams()->with('users')->get();