检查是否存在多对多关系Laravel

Mik*_*e F 2 laravel eloquent laravel-4

我有以下型号:

/* Team.php */

class Team extends Eloquent {

  public function users() {
    return $this->belongsToMany('User');
  }

}

/* User.php */

class User extends Eloquent {

  public function teams() {
    return $this->hasMany('Team');
  }

}
Run Code Online (Sandbox Code Playgroud)

和数据库结构:

teams
  id
  user_id
  name

users
  id
  email

team_user
  id
  team_id
  user_id
Run Code Online (Sandbox Code Playgroud)

用户可以创建(并拥有-因此拥有team.user_id)一个团队,但也可以属于其他团队。

如果可能的话,我希望能够使用Eloquent来获得特定用户的所有团队,而无需执行如下自定义SQL查询:

 SELECT teams.* 
 FROM teams 
 JOIN team_user 
 ON (team_user.team_id = teams.id) 
 WHERE team_user.user_id = ?
Run Code Online (Sandbox Code Playgroud)

自定义SQL查询有效,但我确信这不是Laravel中解决此问题的本机方法。

有人可以帮忙吗?在此先感谢您的阅读。

sbk*_*bkl 5

为了回答标题中的问题,以下是如何在用户模型中定义布尔函数以了解数据透视表“ team_user”中是否存在关系:

public function isPartOfThe($team)
{
    return $this->teams()->where('team_id', $team->id)->exists();
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以按以下方式在控制器中调用该函数:

If($user->isPartOfThe($team)
{
    //true
}
Run Code Online (Sandbox Code Playgroud)