@quitting
Junior php

Как определить изменения для товаров в заказе?

Интернет магазин. Есть заказ и в нем товары. Нажимаем на редактирование и можем менять количество товаров их размеры, добавлять и удалять. Данные сохраняем по нажатию кнопки. Данные приходят в виде масива
$_POST
[
    ['id' => 2, 'count' => 4, 'size' => 'X'],
    ['id' => 2, 'count' => 3, 'size' => 'XL'],
    ['id' => 7, 'count' => 1, 'size' => 'X'],
    ['id' => 5, 'count' => 2, 'size' => 'S'],
    ['id' => 5, 'count' => 2, 'size' => 'S'],
    ['id' => 9, 'count' => 1, 'size' => 'M'],
]


Есть у нас и те товары которые были изначально в заказе. Их мы достаем из базы. Формат схож.
Нужно определить изменения для каждого товара, и записать их, например в лог. (на самом деле нужно по каждому товару провести денежную транзакцию) Как бы вы поступили в подобной ситуации. Удалять и перезаписывать не вариант так как мне важны все изменения для каждого товара.

60de31df6515f640252177.png
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
Как бы вы поступили в подобной ситуации.

Да как обычно при хранении timeline. Первым делом настраиваем права и запрещаем обновление и удаление. Записи можно только добавлять. Вторым - вводим автоматически присваиваемое поле штампа времени создания версии заказа. И, собственно, всё.

Для получения состояния заказа на любой момент времени (актуальное состояние или в прошлом) используем один несложный запрос. То же - если нужно получить разницу между текущим и предыдущим состояниями. Оконные функции делают это на счёт "раз".

И никакие логи не нужны.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы