2015-02-08 121 views
1
转动相关的表关系

所以,我有2种型号叫做TeamUser其中User涉及多个TeamsTeam具有包括多个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

LOL我几乎尝试了一切.....除@JoelHinz FML,谢谢! – guidsen 2015-02-08 22:38:17

+0

没有汗水。猜猜我应该发布它作为答案。 :)一定是误删了评论,但我很高兴它有帮助。 – 2015-02-08 23:17:28

回答

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(); 
+0

我想让用户在用户的团队中。解决它通过执行User :: find(1) - > teams() - >与('users') - > get() - > toArray()' – guidsen 2015-02-08 22:39:34

+0

我的不好,我没有想直。答案已更新:) – lukasgeiter 2015-02-08 22:41:44

+0

我将如何设置'用户'关系的位置,因为我不想在结果中拥有自己的'user_id'。 – guidsen 2015-02-08 22:55:23