【问题标题】:change the role of a user to another role in laravel 8在laravel 8中将用户的角色更改为另一个角色
【发布时间】:2021-08-22 08:08:56
【问题描述】:

我想将用户的角色从一个角色更改为另一个角色,但我收到一条错误消息:

试图获取非对象的属性'Role_name'

这是我在控制器中的更新功能 公共功能更新(请求 $request,用户 $user ) {

    $role=Role::where('Role_name',$request->rolename)->first();
    if($role->Role_name!=='Normal user' && $user->is_admin=1){
        $user->roles()->sync($role);
    }
    elseif($role->Role_name!=='Normal user' && $user->is_admin=1){
        $user->roles()->sync($role);
        $user->update(['is_admin'=>0]);
    }
    return redirect( url('admin/admins') )->with('success','Ucwords($user->name) has been Updated Successfully');
    
}

这也是刀片视图

我不明白问题出在哪里,因为它返回错误。这是我的角色表

我的用户表

我该如何解决这个问题?

【问题讨论】:

  • 请不要张贴您的代码图片。如果有人想帮助您并复制您的代码......他/她不能从图片中做到这一点。

标签: pivot-table laravel-8 user-permissions user-roles


【解决方案1】:

在您选择的标签角色中,您的值是 id 所以在控制器中应该是这样的。

$role = Role::findOrFail($request->rolename);

【讨论】:

    【解决方案2】:

    要确保始终设置 $role,您可以使用 firstOrFail();

    $role = Role::where('Role_name',$request->rolename)->firstOrFail();
    

    可能变量没有设置,这样可以保证不为空;

    【讨论】:

    • 它返回错误 404 not found 即使我 dd($role)
    • 这就是我能够调试的方式,我将“Role_name”更改为“id”。从 $role=Role::where('Role_name',$request->rolename)->first();到 $role=Role::where('id',$request->rolename)->first();因为我已将值设置为 id
    猜你喜欢
    • 2017-08-10
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多