我正在使用Laravel 5.3
如何更新Laravel中的相关表格?
有2个表,students
和hobbies
,它们具有多对多关系。
在视图中,爱好是复选框,如下所示:
<input class="form-check-input" type="checkbox" name="hobby[]" value="1" > basketball
<input class="form-check-input" type="checkbox" name="hobby[]" value="2" > football
<input class="form-check-input" type="checkbox" name="hobby[]" value="3" > swimming
在控制器中,store()
方法是这样的,它可以工作:
public function store(Request $request)
{
$student=Student::create($request->except('hobby'));
$student->hobbies()->attach($request->hobby);
return redirect()->action('StudentController@index');
}
update()
方法是这样的,爱好无法更新:
public function update(Request $request, $id)
{
$student = Student::findOrFail($id);
$student->update($request->except('hobby'));
//How to update hobbies?
$student->hobbies()->attach($request->hobby);
return redirect()->action('StudentController@show', ['id' => $id]);
}
如何更新爱好?
答案 0 :(得分:3)
您不应该使用更新。使用sync
方法:
$student->hobbies()->sync($request->hobby);