Laravel 权限管理的问题

Laravel 运用Entrust 扩展包时,绑定角色和权限的关系时出现了错误。数据库自动生成的permission_id,而现在却出现了permission_model_id,求解


SQLSTATE[42S22]: Column not found: 1054 Unknown column 'permission_model_id' in 'field list'
(SQL: insert intoerp_permission_role(permission_model_id,role_model_id) values (1, 2))

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 8

控制器代码如下:
public function rolePermissionStore(Request $request)
{
$role = RoleModel::where('id','=',$request->input('role_id'))->first();
$permission = PermissionModel::where('id', '=', $request->input('permission_id'))->first();

    $role->attachPermission($permission->id);
    return redirect('/rolePermission')->with('success','角色权限绑定成功');
}
7年前 评论

PermissionModel 修改成 Permission
RoleModel 修改成 Role

7年前 评论

@Kelvin 改了之后添加用户角色绑定报错Cannot redeclare class App\Models\Role
角色与权限报错Cannot redeclare class App\Models\Permission

7年前 评论

@拍个黄瓜 相应的业务代码里 use App\Models\PermissionModel 改成 use App\Models\Permission 了吗?

7年前 评论

@Kelvin 这个肯定改过了 我运行了php composer.char dump-autoload现在错误又变成了Class 'App\Models\RoleModel' not found 现在的RoleModel,PermissionModel都没有了 怎么还出现这个

7年前 评论

@拍个黄瓜

1、修改 PermissionModel 为 Permission

2、修改 RoleModel 为 Role

3、通过全局搜索检查项目中 use Permission、RoleModel 的地方,修改为 1、2 中设置的类名

4、composer dumpautoload

如果出现 Cannot redeclare class App\Models\Role 错误信息,请检查项目中是否存在两个 App\Models\Role 类定义

7年前 评论

@Kelvin 解决了 config配置文件里面 Entrust里面的Model 没有去掉 谢谢

7年前 评论

@Kelvin 权限管理调用can判断,can重命名为may,报一下错误
FatalErrorException in AuthMiddleware.php line 17:Call to a member function may() on string

public function handle($request, Closure $next)
{
    $path = $request->path();
    $user = Auth::user()->id;
    if(!$user->may([$path])){
        abort('403');
    }
    return $next($request);
}
7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!