Таблица oc_product_related
Таблица oc_product_related является простой связующей таблицей, которая определяет, какие товары показываются в блоке "Сопутствующие товары" на странице товара. Эта связь является взаимной: если товар A связан с товаром B, то товар B будет показан как сопутствующий для товара A, и наоборот.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
product_id |
int |
ID основного товара. Внешний ключ, ссылается на oc_product.
|
related_id |
int |
ID товара, который является сопутствующим для основного. Также внешний ключ для таблицы oc_product.
|
Как это работает
Администратор магазина в карточке товара (вкладка "Связи") может указать другие товары, которые будут отображаться в качестве сопутствующих. При сохранении формы для каждой выбранной связи в таблицу oc_product_related добавляется запись, где product_id - это ID текущего товара, а related_id - ID выбранного сопутствующего товара.
Особенность реализации в OpenCart заключается в том, что связь является двусторонней. Это означает, что при отображении страницы товара X система ищет в этой таблице все записи, где product_id = X, и выводит товары с найденными related_id. При этом, если на странице товара Y (который является сопутствующим для X) также будут показаны сопутствующие товары, среди них будет и товар X.
Для оптимизации и избежания дублирования связей (X→Y и Y→X) обычно используется следующий подход: при добавлении связи X→Y система автоматически создает и обратную связь Y→X.
Пример SQL-запроса
Получить все сопутствующие товары для товара с ID 42 можно следующим запросом:
SELECT p.*, pd.name
FROM oc_product_related pr
LEFT JOIN oc_product p ON (pr.related_id = p.product_id)
LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id)
WHERE pr.product_id = 42 AND pd.language_id = 1;
Смотрите также
-
таблицу
oc_product,
которая содержит основные данные о товарах -
таблицу
oc_product_to_category,
которая хранит связи товаров с категориями -
таблицу
oc_product_option,
которая хранит опции товаров