编辑外键的下拉列表

时间:2019-03-08 20:33:21

标签: php laravel

我有一个名为 marks 的表,其中包含2个字段idname_mark。然后,我有另一个名为 series 的表,其中包含3个字段idnamefk_mark

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

enter image description here

这是我的 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>

1 个答案:

答案 0 :(得分:3)

看起来您的问题是您使用的变量。您使用的是$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方法,该方法如何通过键带来值。该方法假设只带来一个记录。在哪里尝试方法。与不同的领域。这会带来一个记录列表。