首页 > 解决方案 > 编辑外键的下拉列表

问题描述

我有一个名为标记id的表,其中包含 2 个字段name_mark。然后,我有另一个名为series的表,其中包含 3 个字段id, name, fk_mark

我的目标是创建一个编辑系统。我的第一个问题是在我的外键 (fk_mark)的下拉列表中,我在每一行中总是有相同的项目。

在此处输入图像描述

这是我的SerieController

public function edit($id)
{
  $series = Serie::find($id);
  $marks = Mark::find($id);
  return view('admin.series.edit', compact('marks', 'series'));
}
public function update(Request $request, $id)
{
  $request->validate([
    'name' => 'required|string',
    'fk_mark' => 'required'
  ]);
  $series = Serie::find($id);
  $series->name = $request->get('name');
  $series->fk_mark = $request->get('fk_mark');
  $series->save();
  return redirect()->route('series.index')
                   ->with('success', 'updated successfully');
}

在我的series.edit.blade我有这个

<form class="panel-body" action="{{route('series.update',$marks->id)}}" method="POST">
  <input name="_method" type="hidden" value="PATCH">
  @csrf
  <fieldset class="form-group">
    <label for="form-group-input-1">Nom</label>
    <input type="text" name="name" class="form-control" id="form-group-input-1" value="{{$series->nom}}">
  </fieldset>
  <div class="form-group">
    <label for="company-content">Select Mark</label>
    <select name="fk_mark" id="" class="form-control">
      @foreach($marks as $mark)
        <option value="{{$marks->id}}">
          {{$marks->name_mark}}
        </option>
      @endforeach
    </select>
  </div>

标签: phplaravel

解决方案


看起来你的问题是你正在使用的变量。您正在使用$marks而不是$mark.

你的代码:

@foreach($marks as $mark)
<option value="{{$marks->id}}">{{$marks->name_mark}}

尝试这个:

@foreach($marks as $mark)
<option value="{{$mark->id}}">{{$mark->name_mark}}

您遇到的另一个问题是,您正在尝试检索 Marks 列表,但您使用的是通过键获取值的 find 方法。这种方法假设只带一个记录。尝试使用不同字段的方法。这会带来一份记录清单。


推荐阅读