获取用户权限列表

时间:2019-06-17 13:01:28

标签: laravel laravel-5 eloquent

我正在尝试获取用户拥有的所有权限。

权限模型

public function roles()
{
    return $this->belongsToMany("App\Models\Role");
}

角色模型

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

public function permissions()
{
    return $this->belongsToMany("App\Models\Permission");
}

用户模型

public function roles()
{
    return $this->belongsToMany('App\Models\Role', 'role_user', 'user_id', 'role_id');
}

我想要用户拥有的所有权限。

用户可以具有viva用户权限

5 个答案:

答案 0 :(得分:2)

您需要在控制器中编写类似的内容。

$users = User::with(['roles', 'roles.permissions', 'permissions'])->get();

这将返回rolespermissions的所有权限。

查看:

foreach($user->roles as $role) {
       foreach($role->permissions as $permission){
          {{ $permission->name }}
       }
    }

答案 1 :(得分:2)

让我们说您的层次结构是User hasMany RoleRole hasMany Permission

然后,应在模型中像这样设置您的关系。

用户模型

public function roles() {
   return $this->hasMany('App\Models\Role`);
}

角色模型

public function permissions() {
   return $this->hasMany('App\Models\Permission`);
}

获取用户权限

User::find(1)->load('roles.permissions')

答案 2 :(得分:0)

要获取用户拥有的所有权限,只需运行即可

$users = User::with(['roles.permissions'])->get();

要使用权限,您需要遍历以下角色:

foreach($user->roles as $role) {
   var_dump($role->permission);
}

答案 3 :(得分:0)

工作正常

$ users = User :: with([['roles.permissions'])-> get()-> find(2);

输出

 {
        "status": false,
        "response": {
            "errors": {
                "id": 2,
                "vender_id": 1,
                "name": "zubair",
                "email": "ts@gmail.com",
                "email_verified_at": null,
                "created_at": "2019-06-17 08:11:25",
                "updated_at": "2019-06-17 08:11:25",
                "roles": [
                    {
                        "id": 1,
                        "vender_id": 1,
                        "name": "product-manager",
                        "display_name": "Product Manager",
                        "description": "Product Manager",
                        "created_at": "2019-06-17 08:11:56",
                        "updated_at": "2019-06-17 08:11:56",
                        "pivot": {
                            "user_id": 2,
                            "role_id": 1
                        },
                        "permissions": [
                            {
                                "id": 1,
                                "name": "add-role",
                                "display_name": "Add Role",
                                "description": "Add Role",
                                "created_at": "2019-06-17 08:20:09",
                                "updated_at": "2019-06-17 08:20:09",
                                "pivot": {
                                    "role_id": 1,
                                    "permission_id": 1
                                }
                            }
                        ]
                    }
                ]
            }
        }
    }

但是当我尝试访问权限时 属性[权限]在此集合实例上不存在。 在Collection.php中

答案 4 :(得分:0)

您可以在用户和角色之间的关系中使用“ with(“ permission”)“: public function roles() { return $this->belongsToMany('App\Models\Role')->with("permissions"); }