Zizaco/委托保存权限使用角色表


Zizaco/entrust Saving permission uses roles table

我在我的网络应用程序中使用Zizaco/委托的依赖关系来创建角色及其权限,该应用程序是在laravel 5.3中构建的。我遇到的问题是(正如标题所说(每当我试图保存新创建的权限时。它存储在roles表中。

迁移文件没有从最初的zizaco/委托包更改。我使用php artisan vendor:publish创建迁移。角色和权限的模型很像文档中所说的:

namespace App'Models;
use Zizaco'Entrust'EntrustRole;
class Role extends EntrustRole
{
protected $table = 'roles';
/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
  protected $fillable = [
      'name', 'display_name', 'description',
  ];
}

和许可

namespace App'Models;
use Zizaco'Entrust'EntrustRole;
class Permission extends EntrustRole
{
protected $table = 'permissions';
/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
      'name', 'display_name', 'description',
  ];
}

在seeder文件中,我使用以下代码生成角色和seeder:

use App'Models'Permission;
use App'Models'Role;
use Illuminate'Database'Seeder;
class RoleSeeder extends Seeder
{
/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{
    $owner = new Role();
    $owner->name         = 'owner';
    $owner->display_name = 'Eigenaar';
    $owner->save();
    $createOwner = new Permission();
    $createOwner->name         = 'create-owner';
    $createOwner->display_name = 'Eigenaar toevoegen';
    $createOwner->save();
 }

委托的配置文件也被修改为角色和权限模型以及表的正确路径。

我尝试过composer dump自动加载,甚至php手工缓存:clear。

我错过了什么吗?请帮忙。如果我的英语语法不正确,请原谅。

编辑:当我试图通过以下行将我的权限附加到角色时:

$owner->attachPermission($createOwner);

我得到一个sql错误:

SQLSTATE[23000]:完整性约束冲突:1452无法添加或更新子行:外键约束失败s(reunions_dev.permission_role,CONSTRAINT permission_role_permission_id_foreign FOREING KEY(permission_id(删除级联上的引用permissions(id(更新级联(

这是因为没有权限的记录可以将ID链接到。有点明显。

我遇到的问题是(正如标题所说(每当我试图保存新创建的权限时。它存储在角色表中。

查看您提供的代码,您为Permission模型扩展了错误的类。更改使用说明&将权限模型中的类扩展到委托权限:

use Zizaco'Entrust'EntrustPermission;
class Permission extends EntrustPermission