Adobe
@Adobe
php developer

Как лучше хранить остатки товаров?

Буду очень рад помощи:
Делаю интернет магазин, работаю по уже отработанной схеме:
Есть таблица с товарами (Products), там все банально:
id, name, price

Есть корзинка, таблица (Cart)
id, key, product_id

Соответственно, когда пользователь тыкнул товар "Добавить в корзину", то в таблицу Cart полетел ключ (поле key, это случайный хэш, который пользователь получает в куку, при заходе на сайт) и ID выбранного товара.
Т.е. я всегда знаю товары пользователя, по его уникальному хэшу.
НУ и есть таблица с самими заказами (Orders)
id, key, total

Т.е. у заказа есть тот же самый уникальный хэш (чтобы можно было получить список товаров в заказе из таблица Cart), и сумма заказа (цены же меняются).
Проблема: У меня у товаров появилось количество и "Размеры" т.е. товар может быть L, XL, XXL и т.д.
Пользователь, при добавлении товара в корзину, теперь должен еще и "Размер" выбирать.
Как накапливать и списывать остатки и в разрезе размеров?
  • Вопрос задан
  • 214 просмотров
Пригласить эксперта
Ответы на вопрос 3
PavelK
@PavelK
Может завести отдельную табличку, в которой привязать дополнительные характеристики (размер и прочее) к каждому товару? И соответственно при добавлении оттуда списывать.
А в таблице заказов добавить поле для запоминания айдишников выбранных характеристик.
Позволит сколько угодно много добавлять дополнительных свойств.
Ответ написан
Комментировать
index0h
@index0h
PHP, Golang. https://github.com/index0h
Зачем вам это в бэкенде? Вы в любом случае полностью зависите от пользовательской куки. Если человек зайдет с другого браузера вы его отличить не сможете.

Добавлять данные имеет смысл только для авторизированных пользователей и жестко связывать с userId. В противном случае - корзина это полностью фронтенд задача, бэкенд же оперирует номенклатурой товаров.

Товар лучше сделайте чем-то "не делимым", остальное - это уже группы товаров.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Легко!
добавляем в таблицу товаров колонку parent (id)
Получаем: id, name, price, parent
price есть - товар без подсвойств (обычный).
прайса нет - берем все у которых parent = текущему id - это будут свойства.
и в них тоже price и кидаем в корзину как отдельные позиции.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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