拉拉维尔 : Get permissions list for a user through roles table with belongtomany

标签 laravel

我有五个表来设置三个表之间的关系: + 用户 + 角色 + 权限

通过数据透视表“user_role”,用户和角色的关系是多对多

角色和权限的关系也是多对多,通过数据透视表是“role_permission

现在我想显示列表用户,但我想将他们的权限带入此列表。我怎样才能做到这一点?

姓名电子邮件角色权限

aaa [email protected]版主、客户创建帖子、更新帖子、删除帖子

最佳答案

我最近通过这种方式完成了这个场景

用户模型

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

榜样

public function permissions()
{
    return $this->belongsToMany(Permission::class,RolePermission::class);
}

现在,当您获得了急切加载关系所需的所有用户

public function index()
{
    $users = User::with('roles.permissions')->get();
               OR
    $users = User::with(['roles' => function($query){
                 $query->with('permissions');
             }])->get();
    return view('view_name',compact('users'));
}

注意:您还可以使用 Laravel 集合来重新格式化角色和权限集合,以免使用多个循环。但我想你明白了

关于拉拉维尔 : Get permissions list for a user through roles table with belongtomany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62241195/

相关文章:

laravel - Laravel Nova显示用户友好的资源名称

php - Laravel 属性 [title] 在 Eloquent 构建器实例中不存在

php - Laravel如何配置发件人姓名而不是电子邮件地址

laravel - 在 Laravel 请求中自定义验证消息

bash - Windows 上的 homestead vagrant 中没有 laravel 同步文件夹

php - 带条件的 laravel 查询生成器

php - 如何在 Laravel 中使用补丁请求?

cookies - 在 Laravel 中,为下一个响应排队 Cookie 的场景是什么

laravel - 在 null Laravel 5.4 上调用成员函数 connection()

php - 在 Laravel homestead 中启用 MSSQL 支持的正确方法是什么?