问题描述
我无法在edituser中获取选项值以在laravel控制器中进行更新。
错误消息:
sqlSTATE[23000]: Integrity constraint violation: 1048 Column 'role_id' cannot be null (sql: update `users` set `name` = Alex,`email` = [email protected],`role_id` = ?,`users`.`updated_at` = 2020-08-17 04:23:45 where `id` = 22)
修改刀片
<select class="mdb-select md-form">
<option>--Səlahiyyət seç---</option>
@foreach ($roles as $role)
<option name="role" value="{{$role->role_id}}">{{$role->name}}</option>
@endforeach
</select>
我的控制器:
public function edit(){
$users=User::all();
$roles=Role::all();
return view('edit',compact('users','roles'));
}
public function edituser(Request $request,$id) {
$user=User::find($id);
$user->name=$request->name;
$user->email=$request->email;
$user->role_id=$request->role;
$user->save();
}
解决方法
您需要在选择标记中添加name="role"
。您的选项值应为id
,而不是role_id
。编写如下代码。
<select name="role" class="mdb-select md-form">
<option>--Səlahiyyət seç---</option>
@foreach ($roles as $role)
<option value="{{$role->id}}">{{$role->name}}</option>
@endforeach
</select>
,
您的问题似乎在编辑刀片中:
$request
由于在选择标记中您没有添加任何名称属性,因此在$request->role
中,没有与<select name="role" class="mdb-select md-form">
<option>--Səlahiyyət seç---</option>
@foreach ($roles as $role)
<option name="role" value="{{$role->role_id}}">{{$role->name}}</option>
@endforeach
</select>
对应的值。
使用以下代码替换代码:
{{1}}