@semki096

Как обновить записи в промежуточной таблице, если данные изменились?

На странице оформления заказа - создаю ордер и записываю в него данные из корзины, записываю в цикле
foreach ( $items_cart as $item ) {
    //запись связанных данных в промежуточную таблицу
    $order->product()->attach([ $item['item_id']=>[ 'product_quantity'=>$item['quantity'],'product_color'=>$item['color'] ] ]);
}


Но допустим пользователь решил вернуться чтобы положить ещё что-то в корзину, а что-то удалить. Значит при возвращении на страницу оформления заказа мне надо внести изменения - удалить то чего уже нет в корзине и добавить новое. А если изменений нет - оставить как есть. Можно ли это сделать и как?
  • Вопрос задан
  • 341 просмотр
Решения вопроса 1
@Nc_Soft
Есть 2 способа, простой и муторный.
Простой способ это каждый раз удалять старые данные из корзины и записывать новые.
Муторный способ это комбинация функций array_diff чтобы узнать какие товары надо добавить, а какие удалить
$attached = array_diff($new, $old);
 $deleted = array_diff($old, $new);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
be_a_dancer
@be_a_dancer
Backend/Fullstack Developer
У laravel есть отличный метод sync. Рекомендую внимательно ознакамливаться с документацией, прежде чем задавать подобные вопросы.

Поиск (ctrl + f) по слову sync(
Ответ написан
Ваш ответ на вопрос

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

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