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))

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 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','角色权限绑定成功');
}
5年前 评论

PermissionModel 修改成 Permission
RoleModel 修改成 Role

5年前 评论

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

5年前 评论

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

5年前 评论

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

5年前 评论

@拍个黄瓜

1、修改 PermissionModel 为 Permission

2、修改 RoleModel 为 Role

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

4、composer dumpautoload

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

5年前 评论

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

5年前 评论

@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);
}
5年前 评论

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