Таблица oc_option_value
Таблица oc_option_value является ключевым элементом системы опций товаров в OpenCart. Она содержит предопределенные значения для различных типов опций (select, radio, checkbox), которые затем присваиваются конкретным товарам через таблицу oc_product_option_value.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
option_value_id |
int |
Уникальный идентификатор значения опции. Автоинкремент. |
option_id |
int |
Внешний ключ, связывающий значение с конкретной опцией. Ссылается на oc_option.
|
image |
varchar(255) |
Путь к изображению, которое представляет это значение опции (например, изображение цвета или варианта). Часто используется для опций типа "Радиокнопка с изображением". |
sort_order |
int |
Порядок сортировки для отображения значений опции в списке. |
Многоязычные названия
Названия значений опций хранятся в связанной таблице oc_option_value_description, которая содержит поля:
option_value_id- ссылка на запись в oc_option_valuelanguage_id- идентификатор языкаname- название значения опции на конкретном языке
Как это работает
Администратор сначала создает опцию (например, "Цвет") в таблице oc_option. Затем для этой опции создаются возможные значения ("Красный", "Синий", "Зеленый") в таблице oc_option_value, где каждое значение связано с опцией через option_id.
После этого эти значения можно присвоить конкретным товарам. Связь между товаром и значением опции устанавливается в таблице oc_product_option_value, где указывается дополнительная информация: цена, количество, вес и т.д.
Когда покупатель выбирает товар и переходит на его страницу, система загружает все опции, доступные для этого товара, и их возможные значения из таблиц oc_option_value и oc_option_value_description.
Пример SQL-запроса
Получить все значения для опции "Цвет" на русском языке:
SELECT ovd.name, ov.image, ov.sort_order
FROM oc_option_value ov
LEFT JOIN oc_option_value_description ovd ON (ov.option_value_id = ovd.option_value_id)
LEFT JOIN oc_option o ON (ov.option_id = o.option_id)
LEFT JOIN oc_option_description od ON (o.option_id = od.option_id)
WHERE od.name = 'Цвет'
AND ovd.language_id = 1
ORDER BY ov.sort_order;
Получить все опции и их значения:
SELECT o.type, od.name as option_name, ovd.name as value_name, ov.image
FROM oc_option o
LEFT JOIN oc_option_description od ON (o.option_id = od.option_id)
LEFT JOIN oc_option_value ov ON (o.option_id = ov.option_id)
LEFT JOIN oc_option_value_description ovd ON (ov.option_value_id = ovd.option_value_id)
WHERE od.language_id = 1 AND ovd.language_id = 1
ORDER BY o.sort_order, ov.sort_order;
Смотрите также
-
таблицу
oc_option,
которая хранит основные данные опций -
таблицу
oc_option_value_description,
которая содержит многоязычные названия значений опций -
таблицу
oc_product_option_value,
которая связывает значения опций с конкретными товарами -
таблицу
oc_product,
которая содержит основные данные товаров