Laravel-permission 新建 MyPermission 模型,赋予角色权限时,permission_id 会变成 my_permission_id ?
用的 laravel-permission 扩展包,新建 MyPermission 模型,赋予角色权限时,permission_id 会变成my_permission_id ?
我在控制器中调用:
$res = MyPermission::create($pm);
//角色 menu 添加对应权限
$role = MyRole::findByName('menu');
$res->assignRole($role); // 这里就出现 插入的字段是 my_permission_id 而不是 permission_id
Mypermission模型:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use Spatie\Permission\Exceptions\PermissionAlreadyExists;
use Spatie\Permission\Guard;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
class MyPermission extends Permission
{
/**
* 重写 permission 的 create 方法,添加了 display_name pm_description pm_type 三个字段
* @param array $attributes
* @return $this|Model
*/
public static function create(array $attributes = [])
{
$attributes['guard_name'] = $attributes['guard_name'] ?? Guard::getDefaultName(static::class);
$permission = static::getPermissions()->filter(function ($permission) use ($attributes) {
return $permission->name === $attributes['name'] && $permission->guard_name === $attributes['guard_name'];
})->first();
if ($permission) {
throw PermissionAlreadyExists::create($attributes['name'], $attributes['guard_name'], $attributes['display_name'], $attributes['pm_description'], $attributes['pm_type']);
}
if (isNotLumen() && app()::VERSION < '5.4') {
return parent::create($attributes);
}
return static::query()->create($attributes);
}
}
推荐文章: