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

标签 laravel laravel-4 eloquent

我有以下型号:

/* 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');
  }

}

和数据库结构:

teams
  id
  user_id
  name

users
  id
  email

team_user
  id
  team_id
  user_id

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

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

 SELECT teams.* 
 FROM teams 
 JOIN team_user 
 ON (team_user.team_id = teams.id) 
 WHERE team_user.user_id = ?

自定义 SQL 查询可以工作,但我确信这不是 Laravel 中处理此问题的原生方法。

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

最佳答案

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

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

然后您可以在 Controller 中调用该函数,如下所示:

If($user->isPartOfThe($team)
{
    //true
}

关于laravel - 检查 Laravel 是否存在多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20071243/

相关文章:

php - updateOrCreate 在 Laravel Eloquent 中不起作用

jquery - 表单提交后出现错误,如何显示选择值?

php - Laravel 5.3 日期验证器 : equal to or after start_date

validation - 如何在 laravel 之外正确实例化 Iluminate 类

mysql - 使用数据透视表的 Laravel Eloquent 多对多关系

php - Laravel Eloquent 多列 IN 子句

Laravel:如何从3个有关系的表中获取数据

Laravel 4.1.* 在服务提供者中注册事件的问题

php - FPDF 页眉和页脚

php - laravel save() 被 "Integrity constraint violation"阻塞 - 所有键都设置正确