如何在Laravel 6/7中访问多对多关系

问题描述 投票:1回答:1

所有人的祝福,

我有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);
     }
}
laravel eloquent eloquent--relationship
1个回答
0
投票

尝试一下:

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属性来获取用户权限作为其属性。

© www.soinside.com 2019 - 2024. All rights reserved.