Таблица oc_length_class
Таблица oc_length_class является справочником единиц измерения длины (например, сантиметр, дюйм, метр) в OpenCart. Она хранит как системные (машинные) идентификаторы единиц, так и их соотношения для корректного пересчета значений между разными единицами измерения.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
length_class_id |
int |
Уникальный идентификатор единицы измерения длины. Это внутренний, системный ID. |
value |
decimal(15,8) |
Коэффициент для пересчета в базовую единицу измерения. Значение определяет, сколько базовых единиц содержится в данной. Например, если базовая единица - метр, то для сантиметра значение будет 0.01 (1 см = 0.01 м), а для миллиметра - 0.001.
|
Как это работает
OpenCart использует эту таблицу для управления единицами измерения длины, которые могут быть назначены товарам (например, для указания габаритов). Администратор может создавать и настраивать различные единицы через админ-панель в разделе "Настройки" → "Единицы измерения".
Ключевым принципом является наличие базовой единицы измерения, к которой приводятся все остальные. Значение в поле value указывает множитель для конвертации выбранной единицы в базовую. Все расчеты (например, при расчете стоимости доставки в зависимости от габаритов) происходят в базовых единицах для обеспечения консистентности.
Для поддержки мультиязычности используется связанная таблица oc_length_class_description, в которой хранятся переведенные названия (title) и аббревиатуры (unit) единиц измерения для каждого языка.
Когда покупатель видит габариты товара на витрине, система берет значение из поля товара (которое всегда сохранено в базовой единице) и конвертирует его в ту единицу измерения, которая выбрана по умолчанию для текущего магазина или языка, используя коэффициент из oc_length_class.
Пример SQL-запроса
Посмотреть все единицы измерения длины и их коэффициенты можно запросом:
SELECT lc.length_class_id, lc.value, lcd.title, lcd.unit
FROM oc_length_class lc
LEFT JOIN oc_length_class_description lcd ON (lc.length_class_id = lcd.length_class_id)
WHERE lcd.language_id = 1;
Смотрите также
-
таблицу
oc_length_class_description,
которая хранит языковые описания единиц длины -
таблицу
oc_weight_class,
которая выполняет аналогичную функцию для единиц веса -
таблицу
oc_product,
в которой поляlength,width,heightиспользуют эту систему единиц