Php 选择框的值永远不会提交到数据库-Laravel中

Php 选择框的值永远不会提交到数据库-Laravel中,php,laravel,laravel-8,Php,Laravel,Laravel 8,当我使用标记将值发布到数据库中时,它工作正常,但当我使用下拉框功能时,它从不发布第一个值,当我从标记中选择第二个值时,值才会发布到数据库中。我就是看不出这个问题。请在这里帮助我,下面我正在输入选择框下拉列表的源代码以及输入选项以及负责将值存储到数据库中的控制器 选择下拉选项代码 <div class="mb-2"> <label for="sub_category_id" class="block">S

当我使用
标记将值发布到数据库中时,它工作正常,但当我使用
下拉框功能时,它从不发布第一个值,当我从
标记中选择第二个值时,值才会发布到数据库中。我就是看不出这个问题。请在这里帮助我,下面我正在输入选择框下拉列表的源代码以及输入选项以及负责将值存储到数据库中的控制器

选择下拉选项代码

<div class="mb-2">
    <label for="sub_category_id" class="block">Sub-Category ID</label>
    <select wire:model="sub_category_id" name="sub_category_id" id="sub_category_id" class="shadow appearance-none border rounded w-full py-2 px-3 text-blue-900">
        @foreach($subcategories as $subcategory)
        <option value="{{ $subcategory->id }}">{{ $subcategory->sub_category_name }}</option>
        @endforeach
        @error('sub_category_id') <h1 class="text-red-500">{{$message}}</h1>@enderror
    </select>
</div>
<div class="mb-2">
    <label for="sub_category_id" class="block">Sub-Category ID</label>
    <input wire:model="sub_category_id" type="text" class="shadow appearance-none border rounded w-full py-2 px-3 text-blue-900" placeholder="Input Sub-Category ID">
    @error('sub_category_id') <h1 class="text-red-500">{{$message}}</h1>@enderror
</div>

子类别ID
@foreach($子类别作为$子类别)
{{$subcategory->sub_category_name}
@endforeach
@错误('sub_category_id'){{$message}}@enderror
输入选项代码

<div class="mb-2">
    <label for="sub_category_id" class="block">Sub-Category ID</label>
    <select wire:model="sub_category_id" name="sub_category_id" id="sub_category_id" class="shadow appearance-none border rounded w-full py-2 px-3 text-blue-900">
        @foreach($subcategories as $subcategory)
        <option value="{{ $subcategory->id }}">{{ $subcategory->sub_category_name }}</option>
        @endforeach
        @error('sub_category_id') <h1 class="text-red-500">{{$message}}</h1>@enderror
    </select>
</div>
<div class="mb-2">
    <label for="sub_category_id" class="block">Sub-Category ID</label>
    <input wire:model="sub_category_id" type="text" class="shadow appearance-none border rounded w-full py-2 px-3 text-blue-900" placeholder="Input Sub-Category ID">
    @error('sub_category_id') <h1 class="text-red-500">{{$message}}</h1>@enderror
</div>

子类别ID
@错误('sub_category_id'){{$message}}@enderror
Livewire控制器:-应用程序\Http\Livewire\MenuItemList

<?php

namespace App\Http\Livewire\MasterMenu;

use Livewire\Component;
use Livewire\WithPagination;
use App\Models\Category;
use App\Models\SubCategory;
use App\Models\MenuItem;

class MenuItemList extends Component
{
    use WithPagination;

    public $search;
    public $itemId,$sub_category_id,$item_name,$item_description;
    public $isOpen = 0;

    public function render() {   
        $subcategories = SubCategory::all();
        $searchParams = '%'.$this->search.'%';

        return view('livewire.master-menu.menu-item-list', compact('subcategories'), [
            'menuitemlist' => MenuItem::where('item_name','like', $searchParams)->latest()->paginate(5)
        ]);
    }

    public function showModal() {
        $this->isOpen = true;
    }

    public function hideModal() {
        $this->isOpen = false;
    }

    public function store() {
        $this->validate(
            [   
                'sub_category_id' => 'required',
                'item_name' => 'required',
            ]
        );

        MenuItem::updateOrCreate(['id' => $this->itemId], [
            'sub_category_id' => $this->sub_category_id,
            'item_name' => $this->item_name,
            'item_description' => $this->item_description
        ]);

        $this->hideModal();

        session()->flash('info', $this->itemId ? 'Post Update Successfully' : 'Post Created Successfully' );

        $this->itemId = '';
        $this->sub_category_id = '';
        $this->item_name = '';
        $this->item_description = '';
    }

    public function edit($id) {
        $menuitem = MenuItem::findOrFail($id);
        $this->itemId = $id;
        $this->sub_category_id = $menuitem->sub_category_id;
        $this->item_name = $menuitem->item_name;
        $this->item_description = $menuitem->item_description;

        $this->showModal();
    }

    public function delete($id) {
        MenuItem::find($id)->delete();
        session()->flash('delete','Post Successfully Deleted');
    }
}

终于找到了答案,这是livewire的一个bug,从未修复过。预先选择的值或默认情况下选择的第一个选项从不将值发布到数据库或服务器

从两个方面解决这个问题

  • 将值为“”的禁用“选择”选项添加到所有选择。
  • 预选装载中的第一个值。
    这是讨论的链接,

    打开控制台,检查那里的错误。谢谢伙计,刚刚安装了望远镜。