У меня есть 3 таблицы:
двери
- ID
- имя
- Изображение
цвета
- ID
- имя
- Изображение
door_colors
- ID
- 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');
}
}
Я хочу создать форму, где я могу отредактировать дверь, и обновить доступные цвета с помощью флажков. Это мой контроллер административных дверей
class AdminDoorsController extends AdminController {
public function edit($id)
{
$data['door'] = Door::find($id);
$data['colors'] = Color::all();
return View::make('admin/doors/form', $data);
}
}
и Просмотр формы дверей администратора
{{ Form::model($door) }}
Colors:
@foreach ($colors as $color)
{{ Form::checkbox('colors[]', $color->id) }} {{ $color->name }}
@endforeach
{{ Form::close() }}
Вопрос 1:. Как сделать так, чтобы при выводе флажков были проверены те, которые имеют существующее отношение с текущей дверью, и те, которые не указаны, не отмечены.
Вопрос 2: Как только я проверю флажки и нажимаю submit, как мне обновить отношения? $door->colors()->detach();
, чтобы очистить все существующие для этой двери, а затем $door->colors()->attach($color_id_array);
для создания новых на основе массива идентификаторов цвета?
Любой ввод оценивается!