关系中的 Where 子句

Where Clause in Relationship

我需要在 User 模型中创建一个 where 子句,以便仅从特殊的 Group.

中获取用户

我有 table group_user,这是一个多对多 table。

我需要取出组 Admin 的所有用户。

如何使用 Eloquent 关系方法对其进行过滤?

您可以像这样使用whereHas方法查询您的关系;

User::whereHas('group', function($query){
    $query->where('name', 'Admin');
})->get();

这将 return 只有拥有与他们相关的组的用户,名称为 Admin。

请注意:这假设您已经在用户模型中设置了与组的关系,关系名称为组。

要建立关系,请在您的用户模型中使用以下内容;

public function group(){
    return $this->belongsToMany('Group', 'group_user', 'user_id', 'group_id');
}

有关更多信息,请访问 here