【发布时间】:2013-12-09 09:02:00
【问题描述】:
我有 3 张桌子:
门
- 身份证
- 姓名
- 图片
颜色
- 身份证
- 姓名
- 图片
door_colors
- 身份证
- door_id
- color_id
和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');
}
}
我想创建一个表单,我可以在其中编辑门,并通过复选框更新可用颜色。 这是我的 Admin Doors 控制器
class AdminDoorsController extends AdminController {
public function edit($id)
{
$data['door'] = Door::find($id);
$data['colors'] = Color::all();
return View::make('admin/doors/form', $data);
}
}
和 Admin Doors 表单视图
{{ Form::model($door) }}
Colors:
@foreach ($colors as $color)
{{ Form::checkbox('colors[]', $color->id) }} {{ $color->name }}
@endforeach
{{ Form::close() }}
问题1:我如何做到这样在输出复选框时,与当前门存在关系的那些被选中,而没有关系的则被取消选中。
问题 2:选中复选框并点击提交后,我将如何更新关系? $door->colors()->detach(); 清除此门的所有现有门,然后$door->colors()->attach($color_id_array); 根据一组颜色 ID 创建新门?
感谢任何输入!
【问题讨论】:
标签: php laravel laravel-4 eloquent blade