Как реализовать фильтр товаров с EAV?

190
19 февраля 2018, 00:34

Есть таблицы categories, products, props, props_value, приведу простой пример:
таблица categories - id, name .
таблица products - id, name, price . таблица props - id, name .
таблица props_value - prop_id, product_id, value

У каждой категории будет свой набор товаров соответственно разные значения фильтров. Хочу что бы в фильтре в категории выводились только те свойства и значения которые есть у товаров этой категории.
Для этого думаю сделать следующую таблицу categories_meta - id, category_id, prop_name, variants(json), эту табличку будет генерировать воркер допустим 1 раз в день, таким образом я получил все варианты свойст и значений для категории 1 дополнительным запросом в эту таблицу.
Но в текущей реализации мне не понятно как делать диф когда фильтром воспользовались, мне ведь нужно сделать варианты значений которые не подходят уже в выбранные свойства неактивными. Допустим пользователь выберет свойство "Цвет:красный:зеленый" и мне вернется 20 элементов из продуктов тут мне понятно как сделать, а если результатов будет не 20 а 20000 или больше, это же не разумно делать выборку 20к продуктов делать диф а потом делать еще 1 запрос в базу только уже с пагинацией. Скажите как эту проблему можно решить, и насколько адекватное такое решения?

Заранее прошу прощения за нечеткое изложения мыслей.

READ ALSO
Перестает работать кусок кода ASP.NET- CORE после публикации на сервере

Перестает работать кусок кода ASP.NET- CORE после публикации на сервере

Господа, нужен Ваш опыт и совет, сам я новичек, поэтому многие вещи непонятны

211
WPF Отображение данных из Com-порта

WPF Отображение данных из Com-порта

Есть устройство (весы), которое на Com-порт кидает со скоростью 10 раз в секунду значение (текстовая строчка)Мне нужно написать приложение позволяющее...

208
Отобразить раздел attach с иcпользованием xaml

Отобразить раздел attach с иcпользованием xaml

Пытаюсь сделать почтовый клиентВозникла проблема с xaml

231