为什么MorphToMany的用户模型权限为空?

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

在 laravel 网站上我使用 spatie-permission 库

在 app/Models/User.php 中我有对权限表的关系引用

public function permissions(): MorphToMany
{
    return $this->morphToMany(Permission::class, 'model', 'model_has_permissions');
}


    $this->users   = User
        ::with('permissions')
        ->orderBy('name', 'asc')
        ->paginate();

我不使用角色,仅使用权限,并且表 model_has_permissions 有数据

但是 $users 数组中的权限子数组为空,但相关用户在 model_has_permissions 表中有数据。

我的关系出了什么问题?

"php": "^8.2",
"laravel/framework": "^11.27.2",
"spatie/laravel-permission": "^6.9",

提前致谢!

laravel eloquent
1个回答
0
投票

根据spatie的文档,最佳实践是通过角色为用户分配权限。即首先创建角色,然后为这些角色分配权限。通过调用用户模型上的 allocateRole 方法,将其依次分配给用户。请参阅示例此处。但如果您希望直接向用户授予权限,则需要直接在用户对象上使用 GivePermissionTo 方法向用户授予权限。我认为这会在创建新用户、编辑现有用户帐户或触发用户事件时发生。之后,您可以调用您编写的代码来返回用户及其权限。请参阅 spatie 网站上有关使用直接权限的示例参考。

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