@kopcapuk

Сохранение связи многие ко многим?

Как быть если в пивотной таблице может быть несколько записей с одинаковыми связующими айдишками, но с разным кастомным полем?
Как сохранять через sync? joxi.ru/GrqenjxUbKZXrz
Из документированного примера понятно, что вспомогательный массив должен быть одномерным:
$user->roles()->sync([1 => ['expires' => true]]);
А я хочу сохранить для товара конкретной характеристики несколько значений, например для конкретного товара и характеристики с id = 1 размер может быть как xs, так и sm:
$product->property()->sync([1 => ['value' => ['xs', 'sm']]]);

В итоге должно получиться как на скрине joxi.ru/GrqenjxUbKZXrz
  • Вопрос задан
  • 313 просмотров
Пригласить эксперта
Ответы на вопрос 2
Denormalization
@Denormalization
Через sync, чтобы были отдельными записями - никак. Можно в value хранить: через запятую, в json, в сериализованном виде.
Ответ написан
@kopcapuk Автор вопроса
Сделал так:
$list = $this->request->input('propertyList', []);

        $model->property()->detach(array_keys($list));

        foreach ($list as $propertyId => $row) {
            foreach ($row as $key => $value) {
                if (is_array($value)) {
                    foreach ($value as $item) {
                        $model->property()->attach([$propertyId => [$key => $item]]);
                    }
                } else {
                    $model->property()->attach([$propertyId => [$key => $value]]);
                }
            }
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы