Laravel 如果在更新时未更改字段,则从数据库返回NULL的带有当前值的下拉字段

Laravel 如果在更新时未更改字段,则从数据库返回NULL的带有当前值的下拉字段

问题描述

我有一个Laravel项目,在表单上捕获“操作员”信息,其中一个字段是一个具有3个选项的下拉菜单。捕获工作得很好。然后我有一个选项来编辑操作员的信息。我使用一个表单来显示来自数据库的当前信息,所有的信息都显示正常,下拉菜单显示当前值,但如果我只想更改“name”,而不触动其他任何东西,它会提示下拉菜单为空。所以如果我尝试编辑,但这次我更改了名字并重新选择相同的当前下拉菜单值,它就能工作。我是否正确地使用了这个表单?

这是编辑表单中的下拉菜单字段

<div class="mb-3">
  <label for="exampleFormControlSelect1" class="form-label">
Operator Licence Status</label>
<select name="ol" class="form-select" id="exampleFormControlSelect1">
    <option selected="" disabled="">{{ $types->ol }}</option>
    <option>Available</option>
    <option>Applied</option>
    <option>None</option>
</select>
</div>

这是更新的控制器函数

 public function UpdateOperator(Request request){pid = request->id;


        Operator::findOrFail(pid)->update([
            'name' => request->name,
            'id_num' =>request->id_num,
            'address' => request->address,
            'phone' =>request->phone,
            'email' => request->email,
            'ol' =>request->ol,
            'ol_number' => request->ol_number,
            'fees_paid' =>request->fees_paid,


        ]);

        notification = array(
            'message' => 'Taxi Operator Updated Successfully',
            'aler-type' => 'success'
        );
        return redirect()->route('view.operator')->with(notification);


    }

如果我选择了下拉菜单的值,它起作用并更新了数据库

解决方案

看起来问题与您在编辑表单中处理下拉菜单值的方式有关。下拉菜单中的选中选项应与数据库中的当前值匹配,以便在更新时能够无缝工作。目前,您正在使用没有值属性的选项,这可能会引发问题。

<div class="mb-3">
<label for="exampleFormControlSelect1" class="form-label">Operator Licence Status</label>
<select name="ol" class="form-select" id="exampleFormControlSelect1">
    <option value="Available" {{ types->ol === 'Available' ? 'selected' : '' }}>Available</option>
    <option value="Applied" {{types->ol === 'Applied' ? 'selected' : '' }}>Applied</option>
    <option value="None" {{ $types->ol === 'None' ? 'selected' : '' }}>None</option>
</select>

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程