在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中将用户的角色更改为另一个角色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Apple 开发者计划中将角色从成员更改为管理员?

如何在Laravel中将2个或更多用户角色分配给1个路由?

我如何传递从另一个模型获取的角色数组以在 laravel 中注册表单

如何使用 laravel 8 +jetstream + spatie 为注册用户分配角色

WordPress 用户角色自动更改

laravel hasmanythrough on manytomany