从Eloquent获取与pivot相关的表的关系

时间:2015-02-08 22:32:37

标签: php laravel eloquent laravel-5

所以,我得到了两个名为TeamUser的模型,其中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'
      ]
   ]

1 个答案:

答案 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();