2016-09-16 29 views
0

我正在使用Laravel 5.3
如何更新Laravel中的相关表格?如何更新Laravel中的相关表格?

有2个表,studentshobbies,它们有多对多的关系。

在视图中,爱好是复选框,这样的:

<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('[email protected]'); 
} 

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('[email protected]', ['id' => $id]); 
} 

如何更新业余爱好?

回答

3

你不应该使用更新。使用sync方法:

$student->hobbies()->sync($request->hobby); 
+0

'$学生 - >爱好() - >连接($请求 - >爱好);'应该是'$学生 - >爱好() - >同步($请求 - >爱好);'?但它也行不通。 – zwl1619

+0

它不会更新或引发错误? –

+0

它的工作原理,谢谢! – zwl1619