我正在使用 slince / cakephp-permission 程序包向我的CakePHP应用程序添加权限和角色。
我设法进行设置,但是当我尝试授予角色权限时,我看到此错误:
Slince\CakePermission\Model\Table\RolesTable association "Permissions" of type "manyToMany" to "App\Model\Table\PermissionsTable" doesn't match the expected class "Slince\CakePermission\Model\Table\PermissionsTable". You can't have an association of the same name with a different target "className" option anywhere in your app.
引发此错误的代码是下面的代码
$roleObj = Role::find($role->name);
$roleObj->givePermission($addPermission);
如果我var_dump $ roleObj,这是我获得的结果
object(Slince\CakePermission\Model\Entity\Role)#239 (13) {
["id"]=>
int(6)
["name"]=>
string(5) "Admin"
["slug"]=>
string(5) "Admin"
["created"]=>
object(Cake\I18n\Time)#258 (3) {
["time"]=>
string(25) "2018-08-22T11:41:28+00:00"
["timezone"]=>
string(3) "UTC"
["fixedNowTime"]=>
bool(false)
}
["modified"]=>
string(15) "22/08/18, 11:41"
["[new]"]=>
bool(false)
["[accessible]"]=>
array(2) {
["id"]=>
bool(false)
["*"]=>
bool(true)
}
["[dirty]"]=>
array(0) {
}
["[original]"]=>
array(0) {
}
["[virtual]"]=>
array(0) {
}
["[errors]"]=>
array(0) {
}
["[invalid]"]=>
array(0) {
}
["[repository]"]=>
string(16) "_PermissionRoles"
}
这些是表格页面中的关系
$this->belongsToMany('Permissions', [
'targetTable' => 'Slince\CakePermission\Model\Table\Permissions',
'className' => 'Slince\CakePermission\Model\Table\Permissions',
'foreignKey' => 'role_id',
'targetForeignKey' => 'permission_id',
'joinTable' => 'roles_permissions',
'saveStrategy' => 'append'
]);
$this->belongsToMany('Roles', [
'targetTable' => 'Slince\CakePermission\Model\Table\Roles',
'className' => 'Slince\CakePermission\Model\Table\Roles',
'foreignKey' => 'permission_id',
'targetForeignKey' => 'role_id',
'joinTable' => 'roles_permissions',
'saveStrategy' => 'append'
]);
我尝试了几种不同的设置,但总是收到相同的错误。 我想在设置表格之间的关系时会丢失一些东西。
你们知道如何解决这个问题吗?
答案 0 :(得分:0)
当您在应用中定义了两个(或多个)名称为“权限”的关联,并且每个关联引用不同的模型类时,就会发生这种情况。
您应检查是否: