我有以下型号:
/* 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/