Zizaco/entrust 保存权限使用角色 table
Zizaco/entrust Saving permission uses roles table
我正在使用 Zizaco/entrust 的依赖项在我的 Web 应用程序中创建角色及其权限,该应用程序是在 laravel 5.3 中构建的。我遇到的问题是(如标题所述)每当我尝试保存新创建的权限时。它存储在 roles
table 中。
迁移文件未从原始 zizaco/entrust 包更改。我使用 php artisan vendor:publish
创建迁移。 Role 和 Permission 的模型很像文档说的:
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();
}
委托的配置文件也修改为正确的角色和权限模型路径以及table。
我试过 composer dump-autoload 甚至 php artisan cache:clear.
我错过了什么吗?请帮忙。
如果语法不正确,请原谅我的英语。
编辑:当我尝试通过以下行将我的权限附加到该角色时:
$owner->attachPermission($createOwner);
我得到一个 sql 错误:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fail
s (reunions_dev
.permission_role
, CONSTRAINT permission_role_permission_id_foreign
FOREIGN KEY (permission_id
)
REFERENCES permissions
(id
) ON DELETE CASCADE ON UPDATE CASCADE)
那是因为没有记录Permission to link ID to。有点明显。
The problem I am having is (as the title says) whenever I try to save a newly created Permission. It is stored in the roles table.
查看您提供的代码,您为您的权限模型扩展了错误的 class。将 Permission 模型中的 use 语句和扩展 class 更改为 EntrustPermission:
use Zizaco\Entrust\EntrustPermission;
class Permission extends EntrustPermission
我正在使用 Zizaco/entrust 的依赖项在我的 Web 应用程序中创建角色及其权限,该应用程序是在 laravel 5.3 中构建的。我遇到的问题是(如标题所述)每当我尝试保存新创建的权限时。它存储在 roles
table 中。
迁移文件未从原始 zizaco/entrust 包更改。我使用 php artisan vendor:publish
创建迁移。 Role 和 Permission 的模型很像文档说的:
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();
}
委托的配置文件也修改为正确的角色和权限模型路径以及table。
我试过 composer dump-autoload 甚至 php artisan cache:clear.
我错过了什么吗?请帮忙。 如果语法不正确,请原谅我的英语。
编辑:当我尝试通过以下行将我的权限附加到该角色时:
$owner->attachPermission($createOwner);
我得到一个 sql 错误:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fail s (
reunions_dev
.permission_role
, CONSTRAINTpermission_role_permission_id_foreign
FOREIGN KEY (permission_id
) REFERENCESpermissions
(id
) ON DELETE CASCADE ON UPDATE CASCADE)
那是因为没有记录Permission to link ID to。有点明显。
The problem I am having is (as the title says) whenever I try to save a newly created Permission. It is stored in the roles table.
查看您提供的代码,您为您的权限模型扩展了错误的 class。将 Permission 模型中的 use 语句和扩展 class 更改为 EntrustPermission:
use Zizaco\Entrust\EntrustPermission;
class Permission extends EntrustPermission