【发布时间】:2018-01-25 13:11:23
【问题描述】:
我在我的 laravel 5.3 应用程序中使用 klaravel/ntrust 包作为 ACL。 除了删除权限外,一切正常。
config/ntrust.php
'admin' => [
User table name
'table' => 'cushbu_admin',
User model
'model' => 'Modules\Admin\Models\Admin',
Ntrust Role Model
'role' => 'Modules\Admin\Models\AdminRole',
Ntrust Roles Table
'roles_table' => 'cushbu_admin_roles',
Ntrust Permission Model
'permission' => 'Modules\Admin\Models\AdminPermission',
Ntrust Permissions Table
'permissions_table' => 'cushbu_admin_permissions',
Ntrust permission_role Table
'permission_role_table' => 'cushbu_admin_permission_role',
Ntrust role_user Table
'role_user_table' => 'cushbu_admin_role_user',
User Foreign key on Ntrust's role_user Table (Pivot)
'user_foreign_key' => 'user_id',
Role Foreign key on Ntrust's role_user and permission_role Tables
(Pivot)
'role_foreign_key' => 'role_id',
Permission Foreign key on Ntrust's permission_role Table (Pivot)
'permission_foreign_key' => 'permission_id',
],
当我尝试删除时出现此错误
SQLSTATE[42S22]:找不到列:1054 未知列 'admin_role_id' 在“字段列表”中(SQL:选择
admin_role_idfromadmin_permission_role其中admin_permission_id= 3)
我没有在任何地方指定 admin_role_id、admin_permission_id,而是存在 role_id、permission_id。
权限模型
<?php
namespace Modules\Admin\Models;
use Illuminate\Database\Eloquent\Model;
use Klaravel\Ntrust\Traits\NtrustPermissionTrait;
use Vinkla\Hashids\Facades\Hashids;
class AdminPermission extends Model
{
use NtrustPermissionTrait;
/*
* Role profile to get value from ntrust config file.
*/
protected static $roleProfile = 'admin';
protected $table = 'cushbu_admin_permissions' ;
protected $fillable = ['name','display_name'];
//Get hashid
public function getRouteKey() {
return Hashids::encode($this->getKey());
}
}
permission_table
id ,name, display_name, 描述
permission_role_table
permission_id ,role_id
【问题讨论】:
-
能否分享一下您的permission_role_table & .permissions_table 的数据库表结构
-
尝试将受保护的静态 $roleProfile 的值保留为 '' 而不是 admin。
-
我在配置“管理员”和“用户”中有 2 个角色配置文件。默认设置为“管理员”
-
您是否尝试过使用“detachPermission”功能。首先找出角色并分离该权限。您可以分离单个或多个权限,请参阅此处的文档:github.com/klaravel/ntrust/blob/master/src/Ntrust/Traits/…
-
将表字段重命名为 admin_permission_id、admin_role_id
标签: php laravel laravel-5.3 acl