Как добавить несколько записей в таблицу посредника в laravel 5.2?
Здравствуйте. Использую Laravel 5.2 . Столкнулся с проблемой множественного добавления в таблицу посредника.
Имеются 3 таблицы MySQL со следующей структурой:
objects ( список объектов )
: id
objects_categories ( список категории объектов )
: id
objects_to_categories ( pivot-таблица для вышеуказанных таблиц )
: object_id, category_id
На странице добавления объектов, можно активировать несколько категорий. Сам объект должен попасть в таблицу objects а категории объекта в таблицу objects_to_categories. У меня получается решить это примерно так:
- добавить объект
- получить ид объекта
- получить массив добавляемых категорий
- добавить циклом все категории
Не очень красиво. Поэтому. Как решить эту задачу стандартным функционалом Laravel 5.2. Буду очень признателен за помощь.
$object->categories()->attach($тут_должен_быть_массив_categories, $pivot_data);
$pivot_data вам сейчас не нужна.
Вам нужно сделать так:
$objectModel->categories()->attach($categories);
miki131:
Спасибо, В таком случае в поле object_id, pivot таблицы (objects_to_categories) попадает NULL
А вот этот вариант заработал.
$objectModel->categories()->attach($categories, ['object_id' => 10]);
В модели Object метод categories() отношение выстраивает так:
return $this->belongsToMany('App\Models\ObjectCategory', 'objects_to_categories', 'object_id', 'category_id');
На сколько я отошел от стандарта? Или все правильно?
Отношение правильное, а вот ['object_id' => 10] должно автоматом ставиться.
Вы так делаете?
$objectModel = Object::create($params);
$objectModel->categories()->attach($categories);