从 table 获取与 Eloquent 相关的关系

Get relation from table related to pivot with Eloquent

所以,我得到了 2 个名为 TeamUser 的模型,其中 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();