НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
49 of 152 menu

Таблица oc_order_product

Таблица oc_order_product является одной из ключевых таблиц в системе OpenCart, так как хранит детализированную информацию о составе каждого заказа. В ней фиксируются все товары, их количество, цена на момент покупки и другие важные атрибуты.

Поля

Поле Тип данных Описание
order_product_id int Уникальный идентификатор позиции в заказе (автоинкремент).
order_id int Внешний ключ, связывающий позицию с конкретным заказом. Ссылается на oc_order.
product_id int Внешний ключ, связывающий позицию с товаром из каталога. Ссылается на oc_product.
name varchar(255) Название товара на момент оформления заказа. Сохраняется для истории, даже если название товара в каталоге будет изменено.
model varchar(64) Модель или артикул товара на момент оформления заказа.
quantity int Количество единиц данного товара в заказе.
price decimal(15,4) Цена за единицу товара на момент оформления заказа (без учета налогов).
total decimal(15,4) Общая стоимость позиции, рассчитанная как price * quantity (без учета налогов).
tax decimal(15,4) Сумма налога для данной позиции.
reward int Количество бонусных баллов, которые были начислены покупателю за покупку этого товара.

Как это работает

Когда клиент оформляет заказ, система создает запись в таблице oc_order, получая её order_id. После этого для каждого товара в корзине создается отдельная запись в таблице oc_order_product, где order_id равен ID созданного заказа.

Критически важно, что в эту таблицу сохраняются актуальные на момент покупки данные: название, модель, цена. Это гарантирует, что история заказов останется неизменной, даже если администратор позже отредактирует товар в каталоге, изменит его цену или артикул.

Поле product_id позволяет связать позицию в заказе с актуальным товаром в каталоге. Это используется для отображения актуального товара в истории заказов, для ведения учета остатков (вычитание quantity) и для системы отзывов (чтобы оставить отзыв можно было только на купленный товар).

Поля price, total и tax являются основой для финансовой отчетности и расчета итоговой суммы заказа.

Пример SQL-запроса

Получить полный список товаров для конкретного заказа можно следующим запросом:

SELECT op.* FROM oc_order_product op WHERE op.order_id = 42 ORDER BY op.order_product_id;

Получить детальную информацию о товарах в заказе с названиями из каталога:

SELECT op.name as ordered_name, op.price as ordered_price, op.quantity, p.product_id, p.price as current_price, p.model as current_model FROM oc_order_product op LEFT JOIN oc_product p ON (op.product_id = p.product_id) WHERE op.order_id = 42;

Смотрите также

  • таблицу oc_order,
    которая хранит основную информацию о заказах
  • таблицу oc_order_option,
    которая хранит опции для товаров в заказе
  • таблицу oc_product,
    которая содержит данные о товарах в каталоге
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить