在laravel 8中将用户的角色更改为另一个角色
Posted
技术标签:
【中文标题】在laravel 8中将用户的角色更改为另一个角色【英文标题】:change the role of a user to another role in 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');
这也是刀片视图
我不明白问题出在哪里,因为它返回错误。这是我的角色表
我的用户表
我该如何解决这个问题?
【问题讨论】:
请不要张贴您的代码图片。如果有人想帮助您并复制您的代码......他/她不能从图片中做到这一点。 【参考方案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以上是关于在laravel 8中将用户的角色更改为另一个角色的主要内容,如果未能解决你的问题,请参考以下文章
我如何传递从另一个模型获取的角色数组以在 laravel 中注册表单