编辑下拉列表不会获取值


Editing drop-down doesn't fetch value

我为类别和子类别创建了一个下拉列表。当我提交表单时它工作正常,但是当我编辑表单时,类别字段没有来自数据库的重新填充数据,类别下拉列表就像它在创建表单中显示的一样。

这是我的编辑:

    <div class="form-group">
    {!! Form::label('category','Category:') !!}
    <select name="category" id="category" class="form-control input-sm">
        @foreach($s as $k)
            <option value="{{ $k['id'] }}">{{ $k['name'] }}</option>
        @endforeach
    </select>
</div>
<div class="form-group">
    {!! Form::label('subcategory','Subcategory:') !!}
    <select name="subcategory" id="subcategory" class="form-control input-sm">
        <option value=""></option>
    </select>
</div>

控制器:

    public function edit($id)
{
    // get the event
    $event = Event::findOrFail($id);
    $s = Category::all()->where('parent_id','=','0');
    $r = Event::all();
    $daysOfWeek = unserialize(Event::find($id)->days_of_week);
    // show the edit form and pass the event
    return view('event.edit',compact('event','s','r','daysOfWeek'));}

我没有在下拉菜单中使用关系,我在选择类别后使用 jquery 和 ajax 选择子类别。当我编辑表单时,我该怎么做才能获取存储在数据库中的值?

我得到了答案,感谢每个人的帮助!

视图:

    <div class="form-group">
    {!! Form::label('category','Category:') !!}
    <select name="category" id="category" class="form-control input-sm">
        @foreach($s as $k)
            @if($k['id'] == $m)
            <option value="{{ $k['id'] }}" selected="{{$m}}">{{ $k['name'] }}</option>
            @else
            <option value="{{ $k['id'] }}">{{ $k['name'] }}</option>
            @endif
        @endforeach
    </select>
</div>
<div class="form-group">
    {!! Form::label('subcategory','Subcategory:') !!}
    <select name="subcategory" id="subcategory" class="form-control input-sm">
        @foreach($subcat as $k)
            @if($k['name'] == $subid)
                <option value="{{ $k['id'] }}" selected="{{$subid}}">{{ $k['name'] }}</option>
            @else
                <option value="{{ $k['id'] }}">{{ $k['name'] }}</option>
            @endif
        @endforeach
        <option value=""></option>
    </select>
</div>

控制器:

    public function edit($id)
    {
    $event = Event::findOrFail($id);
    $s = Category::where('parent_id','=','0')->get();
    $r = Event::all();
    $m = Event::find($id)->category;
    $subid = Event::find($id)->subcategory;
    $subcat = Category::where('parent_id','=',$m)->get();
    $daysOfWeek = unserialize(Event::find($id)->days_of_week);
    return view('event.edit',compact('event','s','subcat','subid','r','daysOfWeek','m'));
    }

控制器方法中存在错误edit()

您的代码:

$s = Category::all()->where('parent_id','=','0'); // wrong

那不是应该的:

$s = Category::where('parent_id','=','0')->get(); // correct

您已经在获取带有 all 的类别,然后传递where条件,因此它不会向您显示结果。 where条件返回Illuminate'Database'Eloquent'Builderinstance,而不是所需的结果。

用正确的行更新错误的行,结果应如您所愿。