РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
27 of 152 menu

Таблица oc_product_filter

Таблица oc_product_filter является промежуточной таблицей, которая связывает товары (таблица oc_product) с фильтрами (таблица oc_filter). Эта связь позволяет назначать товарам различные характеристики для фильтрации в каталоге.

Поля

Поле Тип данных Описание
product_id int Идентификатор товара. Внешний ключ, ссылается на oc_product.
filter_id int Идентификатор фильтра. Внешний ключ, ссылается на oc_filter.

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

Система фильтров в OpenCart состоит из двух основных таблиц: oc_filter (хранит группы фильтров и сами фильтры) и oc_product_filter (связывает фильтры с товарами).

Когда администратор в карточке товара в разделе "Связи" назначает фильтры, система создает записи в таблице oc_product_filter. Каждая запись содержит пару product_id + filter_id.

На фронтенде, когда пользователь выбирает фильтры в категории, система выполняет поиск товаров, которые имеют соответствующие filter_id в таблице oc_product_filter.

Один товар может быть связан с несколькими фильтрами, и один фильтр может быть назначен нескольким товарам, что реализует отношение "многие-ко-многим".

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

Получить все фильтры для конкретного товара:

SELECT f.filter_id, fd.name, fg.filter_group_id, fgd.name as group_name FROM oc_product_filter pf LEFT JOIN oc_filter f ON (pf.filter_id = f.filter_id) LEFT JOIN oc_filter_description fd ON (f.filter_id = fd.filter_id AND fd.language_id = 1) LEFT JOIN oc_filter_group fg ON (f.filter_group_id = fg.filter_group_id) LEFT JOIN oc_filter_group_description fgd ON (fg.filter_group_id = fgd.filter_group_id AND fgd.language_id = 1) WHERE pf.product_id = 42;

Найти все товары, которые имеют определенный фильтр:

SELECT p.product_id, pd.name FROM oc_product_filter pf LEFT JOIN oc_product p ON (pf.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id AND pd.language_id = 1) WHERE pf.filter_id = 15;

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

  • таблицу oc_product,
    которая содержит основные данные о товарах
  • таблицу oc_filter,
    которая хранит информацию о фильтрах и группах фильтров
  • таблицу oc_filter_description,
    которая содержит описания фильтров на разных языках
  • таблицу oc_filter_group,
    которая хранит группы фильтров
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить