更改权限和角色表 spatie/laravel-permission

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

我正在尝试在我的应用程序中实现这种类型的管理。因为我之前没有做过类似的事情,所以这是我遵循的指南:https://www.honeybadger.io/blog/user-roles-permissions-in-laravel/

它的作用就像一个魅力!

我想做的是更改迁移以更改表(它们在每个项目中都可以立即工作)新表遵循相同的逻辑,但问题来自于

model_type
表中的
model_has_permissions
列。我删除了此列并将
model_id
更改为引用我的
user_id
以使其看起来更简单。但在每个查询中,应用程序都会添加
model_has_permissions.model_type
来解决错误。 我想知道你们中有人以前做过这个实现吗?您对编辑什么以从查询中删除此列有什么想法吗?

非常接受任何和所有帮助!

laravel permissions roles
1个回答
0
投票

您将覆盖模型
创建您自己的包提供的

Permission
Role
模型版本。在这些模型中,您可以覆盖引用旧结构的关系和方法。具体来说,您需要更新
users
roles
和权限关系以使用修改后的表。

// CustomPermission.php
namespace App\Models;

use Spatie\Permission\Models\Permission as BasePermission;

class CustomPermission extends BasePermission
{
    public function users()
    {
        return $this->belongsToMany(User::class, 'custom_model_has_permissions', 'model_id', 'permission_id');
    }
}

// CustomRole.php
namespace App\Models;

use Spatie\Permission\Models\Role as BaseRole;

class CustomRole extends BaseRole
{
    public function users()
    {
        return $this->belongsToMany(User::class, 'custom_model_has_roles', 'model_id', 'role_id');
    }
}

自定义包的服务提供者
在 Laravel 应用程序的服务提供者中,您可以将自定义模型绑定到包的接口。这样,当包通过其接口访问模型时,它将使用具有更新关系的自定义模型。

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