我有3张桌子:
门
> id
>名称
>形象
颜色
> id
>名称
>形象
door_colors
> id
> door_id
> color_id
和两个与多对多关系的模型(每个门都有各种颜色,许多颜色重叠在一起):
门型号
@H_502_23@class Door extends Eloquent { public function colors() { return $this->belongsToMany('Color','door_colors'); } }颜色模型
@H_502_23@class Color extends Eloquent { public function doors() { return $this->belongsToMany('Door','door_colors'); } }我想创建一个窗体,我可以编辑门,并通过复选框更新可用的颜色.
这是我的管理员控制器
和管理员门窗体视图
@H_502_23@{{ Form::model($door) }} Colors: @foreach ($colors as $color) {{ Form::checkBox('colors[]',$color->id) }} {{ $color->name }} @endforeach {{ Form::close() }}问题1:如何进行复选,如果输入复选框,将检查与当前门有现有关系的那些,而不检查那些.
问题2:一旦我检查框并点击提交,我将如何更新关系? $door->颜色() – >分离();清除所有现有的门,然后$door-> colors() – > attach($color_id_array);根据一系列颜色ids创建新的?
任何输入是赞赏!
问题1:您应该将其传递到包含您的表单的视图中,尽管它也可以在视图中进行,尽管这不是真正的最佳实践.做类似的事情…
@H_502_23@$checkeds = Door::find(1)->colors()->lists('id');
@H_502_23@$checked = in_array($color->id,$checkeds) ? true : false;
原文链接:https://www.f2er.com/laravel/132251.html然后你会改变
@H_502_23@{{ Form::checkBox('colors[]',$color->id) }} {{ $color->name }}`至
@H_502_23@{{ Form::checkBox('colors[]',$color->id,$checked) }} {{ $color->name }}问题2:这实际上是一个完美的方法给你.使用
@H_502_23@$door->colors()->sync(Input::get('colors'));