从 table 获取与 Eloquent 相关的关系
Get relation from table related to pivot with Eloquent
所以,我得到了 2 个名为 Team
、User
的模型,其中 User
与多个 Teams
相关,而 Team
有多个 Users
包括在内。这意味着我有一个名为 team_user
.
的枢轴 table
我想从用户那里抓取团队成员。
我的关系设置如下:
// 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');
}
我如何 return 团队中的用户来自用户?
我试过 User::find(1)->teams()->users()
但这行不通..
我正在尝试 return 这样的数组:
[
'teamName' => 'Team #1',
'users' => [
[
'username' => 'John Doe'
], [
'username' => 'John Doe #2'
]
],
'teamName' => 'Team #2',
'users' => [
[
'username' => 'Doe John'
], [
'username' => 'Doe John #2'
]
]
首先,如果你的枢轴 table 被称为 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();
所以,我得到了 2 个名为 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');
}
我如何 return 团队中的用户来自用户?
我试过 User::find(1)->teams()->users()
但这行不通..
我正在尝试 return 这样的数组:
[
'teamName' => 'Team #1',
'users' => [
[
'username' => 'John Doe'
], [
'username' => 'John Doe #2'
]
],
'teamName' => 'Team #2',
'users' => [
[
'username' => 'Doe John'
], [
'username' => 'Doe John #2'
]
]
首先,如果你的枢轴 table 被称为 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();