[英]Laravel - Edit role user by role_name
我已经为我的用户创建了一个编辑页面,除了更改角色之外,其他所有操作都可以进行。 我做了一个选择菜单,该菜单通过一个foreach循环显示所有角色。 它显示用户的当前角色,如下所示:
<div class="form-group row">
<div class="col-md-4">
<label for="Datum">Rol:</label>
</div>
<div class="col-md-8">
<select class="form-control" id="Datum" name="role">
<option selected>{{ $user->role->role_name }}</option>
@foreach($roles as $role)
<option>{{ $role->role_name }}</option>
@endforeach
</select>
</div>
</div>
我希望能够通过role_name而不是ID来更改角色。 老实说,我不知道在哪里看。 我该如何实现?
表单通过的控制器如下所示:
public function updateUser(Request $request, $id)
{
$user = User::find($id);
$user->update($request->all());
$user->save();
return back()->with('flash', 'Account is geupdate');
}
在数据库中,用户具有role_id,在角色表中,它具有所有角色。 关系如下:用户具有角色,角色具有许多用户。 这些关系在模型中设置。 因此{{ $user->role->role_name }}
可以正常工作。
提前致谢!
假设role_name是唯一的。 在您的发布方法中,您可以执行以下操作-
public function updateUser(Request $request, $id)
{
$role = Role::where('role_name','=',$request->input('role_name'))->first();
$user = User::find($id);
$user->role_id = $role->id;
$user->save();
return back()->with('flash', 'Account is geupdate');
}
根据您的评论,将此添加到您的用户模型上-
public function setPasswordAttribute($password)
{
$this->attributes['password'] = bcrypt($password);
}
希望能帮助到你 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.