所有人的祝福,
我有3个模型,即用户,角色和权限。用户与角色有多对多关系角色与Permission有多对多关系
我有5个表,用户,角色,role_user,权限,permission_role
我的问题是:用户模型中是否有一种方法可以访问分配给用户角色的所有权限?
感谢所有人。
代码:用户模型
class User extends Authenticatable
{
public function roles()
{
return $this->belongsToMany(Role::class);
}
public function permissions()
{
//how can i get all permissions of the user
}
}
角色模型
class Role extends Authenticatable
{
public function users()
{
return $this->belongsToMany(User::class);
}
public function permissions()
{
return $this->belongsToMany(Permission:class);
}
}
权限模型
class Permission extends Authenticatable
{
public function roles()
{
return $this->belongsToMany(Role::class);
}
}
尝试一下:
class User extends Authenticatable
{
public function roles()
{
return $this->belongsToMany(Role::class);
}
public function permissions()
{
$permissionList = [];
foreach($this->roles as $role){
foreach($role->permissions as $permission){
if(!in_array($permission->name, $permissionList){
$permissionList[] = $permission->name
}
}
}
return $permissionList;
}
}
我认为您必须首先迭代角色以获得权限,也可以使用append属性来获取用户权限作为其属性。