Таблица oc_custom_field_value_description
Таблица oc_custom_field_value_description является частью системы пользовательских полей в OpenCart и предназначена для хранения многоязычных описаний значений этих полей. Она позволяет администратору создавать удобные подсказки и пояснения для значений выпадающих списков, переключателей и флажков на разных языках магазина.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
custom_field_value_id |
int |
Идентификатор значения пользовательского поля. Внешний ключ, связывающий описание с конкретным значением из таблицы oc_custom_field_value.
|
language_id |
int |
Идентификатор языка. Внешний ключ для таблицы oc_language. Определяет, для какого языка предназначено данное описание.
|
custom_field_id |
int |
Идентификатор самого пользовательского поля. Внешний ключ для таблицы oc_custom_field. Прямая связь с родительским полем.
|
name |
varchar(128) |
Название значения, которое видит пользователь при выборе (например, "Стандартная доставка", "Экспресс" для поля "Способ доставки"). |
Как это работает
В админ-панели OpenCart при создании пользовательского поля типа "Select", "Radio" или "Checkbox" администратор может добавить несколько возможных значений для выбора. Для каждого из этих значений в таблицу oc_custom_field_value создается запись.
Затем, для поддержки мультиязычности, для каждого значения и для каждого активного языка магазина в таблицу oc_custom_field_value_description добавляется перевод его названия. Это означает, что для одного custom_field_value_id в этой таблице будет несколько записей с разными language_id.
Когда покупатель на витрине магазина видит форму с пользовательским полем, система загружает соответствующие значения и их описания на текущем языке, подставляя данные из поля name.
Наличие поля custom_field_id в этой таблице является избыточным с точки зрения нормализации базы данных (так как его можно получить через JOIN с таблицей oc_custom_field_value), но оно добавлено для оптимизации запросов и упрощения выборки данных.
Пример SQL-запроса
Получить все значения с их переводами для конкретного пользовательского поля можно следующим запросом:
SELECT cfvd.custom_field_value_id, cfvd.language_id, l.name as language_name, cfvd.name as value_name
FROM oc_custom_field_value_description cfvd
LEFT JOIN oc_language l ON (cfvd.language_id = l.language_id)
WHERE cfvd.custom_field_id = 7
ORDER BY cfvd.custom_field_value_id, cfvd.language_id;
Смотрите также
-
таблицу
oc_custom_field,
которая хранит основные данные о пользовательских полях -
таблицу
oc_custom_field_value,
которая содержит значения пользовательских полей -
таблицу
oc_custom_field_customer_group,
которая определяет связь полей с группами покупателей