我有3张桌子:
doors
colors
门颜色
以及2个具有多对多关系的模型(每扇门都有多种颜色,并且许多颜色门与门重叠):
门模型
class Door extends Eloquent {
public function colors()
{
return $this->belongsToMany('Color', 'door_colors');
}
}
颜色模型
class Color extends Eloquent {
public function doors()
{
return $this->belongsToMany('Door', 'door_colors');
}
}
我想创建一个可以编辑门的表单,并通过复选框更新可用颜色。
这是我的管理门控制器
class AdminDoorsController extends AdminController {
public function edit($id)
{
$data['door'] = Door::find($id);
$data['colors'] = Color::all();
return View::make('admin/doors/form', $data);
}
}
and the 管理门表单视图
{{ Form::model($door) }}
Colors:
@foreach ($colors as $color)
{{ Form::checkbox('colors[]', $color->id) }} {{ $color->name }}
@endforeach
{{ Form::close() }}
问题一:我该如何做到这一点,以便在输出复选框时,选中与当前门存在现有关系的复选框,而不选中那些没有关系的复选框。
问题2:一旦我选中复选框并点击提交,我将如何更新关系?$door->colors()->detach();
清除该门的所有现有门,然后$door->colors()->attach($color_id_array);
基于颜色 id 数组创建新的?
任何意见表示赞赏!