从多个表中检索数据并将其表示在Laravel的组合框中

时间:2018-11-28 15:25:39

标签: php database laravel

我的数据库中有Course表,该表与Location表一一对应, 当我尝试向表中添加新课程时,我选择该课程的位置,显示为(Class a,Class b,...),但是当我尝试编辑该课程位置时,显示的数据就是该课程的ID位置不是它的名称

我在CourseController中编写此代码以进行编辑:

(1, 0, 0)

和更新功能

 public function edit(Course $course)
{
    $locations = Location::all();
    $loc =array();
    foreach($locations as $location)
    $loc[$location->id]=$location->name_location;

 return view('admin.courses.edit',compact('course','loc','locations'));
}

在edit.blade中,我尝试

    public function update(Request $request, Course $course)
{

    $course->update($request->all());
    $course->location_id = $request->input('location_id');
    return redirect()->route('courses.index')
                    ->with('success','location updated successfully');
}

在课程模型中

      <select name='location_id' style="width:220px;">

                        <option value="{{$locations}}">{{$course->location_id}}</option>

                      </select>

在位置模型中

 public function location(){

    return $this->belongsTo('App\Location');
   }

我希望能够编辑课程的位置 知道插入正确但编辑否

有人可以告诉我该怎么做吗? 我使用Laravel 5.7

1 个答案:

答案 0 :(得分:0)

假设您有:

具有属性的位置:ID,名称

位置有很多课程

课程属于位置

public function edit(Course $course)
{
    $locations = Location::all();

    return view('admin.courses.edit',compact('course','locations'));
}

在您的刀片中:

<select name='location_id' style="width:220px;">
    @foreach ($locations as $location)
      <option value="{{$location->id}}">{{$location->name}}</option>
    @endforeach
</select>