我有两个表,schools
和grades
,它们与很多相关。我已经成功地在模型中建立了多对多的关系。
我可以将选择框值插入数据库,但我很难尝试获取。
例如,当我点击id = 1
的成绩时,我正在尝试将相应的学校提取到包含值的选择框中。我收到错误Integrity constraint violation: 1052 Column 'id' in field list is ambiguous
。
我在查询中做得对不对?
控制器
public function editPage($id)
{
$grade = Grade::whereId($id)->firstorFail();
$schools = $grade->schools()->pluck('id')->toArray();
return view('grades.edit',compact('grade','schools'));
}
模型
public function schools()
{
return $this->belongsToMany('App\School')
->withTimestamps();
}
查看
<div class="form-group">
<label for="select" class="col-lg-2 control-label">School</label>
<div class="col-lg-10">
<select class="form-control" id="school" name="school[]" mulitple>
@foreach($schools as $school)
<option value="{!! $school->id !!}" @if(in_array($school->id, $schools)) selected="selected" @endif >
{!! $schools->name !!}
</option>
@endforeach
</select>
</select>
</div>
</div>
答案 0 :(得分:0)
我认为这可能是因为它不确定你想要采用什么'id'。
尝试
$schools = $grade->schools()->pluck('schools.id')->toArray();
您也可以通过成绩并在视图中获得学校......
public function editPage($id)
{
$grade = Grade::whereId($id)->with('schools')->firstorFail();
return view('grades.edit', compact('grade'));
}
然后
$school_options = $grade->schools->pluck('name', 'id');
@foreach($school_options->all() as $key => $value)
<option value="{{ $key }}">{{ $value }}</option>
@endforeach
答案 1 :(得分:0)
$school
在您的案例中是一个数组,因此您的观点很可能无法决定如何处理$school->id
...
您似乎更有可能只在视图中使用学校模型,因此只需compact('grade')
,然后在视图中使用foreach($grade->schools as $school)
。
此外,您选择的选项的条件似乎是错误的,每个$school
(此时只是一个id,因为$schools
是一个ID数组)显然在$schools
中,因为&#39}你的foreach是如何建立的。但你应该先解决另一件事。