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

Таблица oc_order_option

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

Поля

Поле Тип данных Описание
order_option_id int Уникальный идентификатор записи об опции в заказе. Первичный ключ таблицы.
order_id int Идентификатор заказа. Внешний ключ, ссылается на таблицу oc_order.
order_product_id int Идентификатор товара в заказе. Внешний ключ, ссылается на таблицу oc_order_product.
product_option_id int Идентификатор опции продукта. Ссылается на таблицу oc_product_option.
product_option_value_id int Идентификатор значения опции продукта. Ссылается на таблицу oc_product_option_value. Может быть 0 для опций типа "Текст", "Файл" или "Дата".
name varchar(255) Название опции на момент оформления заказа (сохраняется историческое значение).
value text Значение опции, выбранное пользователем. Для опций выбора - название значения, для текстовых полей - введенный текст, для файлов - имя загруженного файла.
type varchar(32) Тип опции (select, radio, checkbox, text, textarea, file, date, time, datetime).

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

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

Важной особенностью является то, что в таблице сохраняются актуальные на момент заказа названия опций и их значений (поля name и value). Это гарантирует, что даже если администратор later изменит название опции или её значения в каталоге, исторические данные заказов останутся неизменными и корректными.

Связь с таблицей oc_order_product через order_product_id позволяет точно определить, к какому именно товару в заказе относится каждая опция. Один товар в заказе может иметь несколько опций, и для каждой будет создана отдельная запись.

Для опций, которые не имеют предопределенных значений (таких как текстовые поля, файлы), поле product_option_value_id будет равно 0, а в поле value будет храниться введенный пользователем текст или имя загруженного файла.

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

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

SELECT oo.*, op.name as product_name, op.model FROM oc_order_option oo LEFT JOIN oc_order_product op ON (oo.order_product_id = op.order_product_id) WHERE oo.order_id = 123 ORDER BY op.order_product_id, oo.order_option_id;

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

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