我无法在Laravel中获取更新的选项值

问题描述

我无法在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}}