【问题标题】:Laravel Eloquent - Return Users with specific role (many-to-many relationship)Laravel Eloquent - 返回具有特定角色的用户(多对多关系)
【发布时间】:2022-01-08 05:41:50
【问题描述】:

我有一个应用程序,我想在其中查找具有特定角色(在本例中为超级管理员)的所有用户(来自指定客户端)

一个客户端可以有很多用户

public function users() {
    return $this->hasMany(User::class);
}

一个用户可以属于多个角色

public function roles() {
    return $this->belongsToMany(Role::class);
}

我希望能够从具有特定角色的客户端返回所有用户。

所以在客户端模型中我想要这样的东西:

public function superAdmins() {
    return ... // NOT SURE WHAT TO PUT HERE
}

【问题讨论】:

  • 你试过使用hasMany(User::class)->whereHas('roles', function($query){return $query->where('name', 'super');})吗? laravel.com/docs/8.x/…
  • @SuperDJ - 我刚刚设法实现了非常相似但不太好的东西。这是一种享受。添加它作为答案,我会给你信用
  • 另外,由于您的 Client 模型上已经有 public function users()return $this->users()->whereHas('roles', function ($query) { ... }); - 您可以链接关系而不是重新定义 hasMany(User::class)

标签: laravel eloquent


【解决方案1】:

在定义关系时,您也可以添加where() 语句。

这意味着你可以使用whereHas:

public function superAdmins() {
    return $this->hasMany(User::class)
              ->whereHas('roles', function($query) {
                  return $query->where('name', 'super');
              });
}

【讨论】:

    猜你喜欢
    • 2017-04-16
    • 2017-05-17
    • 1970-01-01
    • 2019-08-17
    • 2019-06-13
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    相关资源
    最近更新 更多