首页 > 解决方案 > 如何从 Laravel 中具有多个角色的用户那里获取权限?

问题描述

我正在构建一个新的 laravel 应用程序,其中一个用户可以有多个角色,这些角色有多个权限(权限)。现在我想从某个用户那里获得所有权限。

我正在使用 Laravel 5.8 和 Eloquent。我可以从用户那里获得角色,从角色那里获得权限,但不能从用户那里获得权限。

 dd(Auth::user()->roles->rights);

模型用户:

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

模特角色:

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

    public function rights()
    {
        return $this->belongsToMany(Right::class);
    }

模特权利

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

我希望通过他拥有的角色获得一位用户过去的所有权限。

标签: laraveleloquentmany-to-manylaravel-5.8

解决方案


由于一个用户可以拥有多个角色,一个角色可以拥有多个权限,因此您需要遍历每个角色

//Retrieving rights associated with the user
public function retrieveRightsAssociatedWithUser($user){
    $rightsAssociatedWithUser = [];
    foreach($user->roles as $role){
        $rightsAssociatedWithUser[] = $role->rights; 
    }
    return $rightsAssociatedWithUser;
}

推荐阅读