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

时间:2016-09-27 13:29:12

标签: php laravel laravel-5.3 entrust

我正在使用Zizaco/entrust的依赖关系在我的webapplication中创建角色及其权限,这是在laravel 5.3中构建的。每当我尝试保存新创建的权限时,我遇到的问题是(如标题所示)。它存储在roles表中。

迁移文件尚未从原始zizaco / entrust包更改。我使用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',
  ];
}

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

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-autoload甚至php artisan cache:clear。

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

编辑:当我尝试通过以下行附加我对该角色的许可时:

$owner->attachPermission($createOwner);

我收到一个sql错误:

  

SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败     s(reunions_devpermission_role,CONSTRAINT permission_role_permission_id_foreign FOREIGN KEY(permission_id)      参考permissionsid)ON UPETE CASCADE ON UPDATE CASCADE)

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

1 个答案:

答案 0 :(得分:0)

  

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

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

use Zizaco\Entrust\EntrustPermission;

class Permission extends EntrustPermission