Медленно работает фильтр товаров

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
rotting
Сообщения: 74
Зарегистрирован: 2016.07.28, 15:50

Медленно работает фильтр товаров

Сообщение rotting »

Доброго дня, есть таблица товаров, свойств, а также таблица с полями "id товара", "id свойства", "значение свойства".

Нужно выводить отдельную форму с фильтрами по свойствам.
Все бы ничего, но в dropBox'ах необходимо выводить значения, только те, по которым есть товар.

Соответственно нужно перебрать в цикле все модели, а не только те, которые есть на текущей странице, чтоб выкупить доступные значение свойств.

Работает долго уже на 500 товарах. Понимаю что задача тривиальная, а я решаю её не правильно.

Подскажите как?
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Медленно работает фильтр товаров

Сообщение Dominus »

Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Медленно работает фильтр товаров

Сообщение skynin »

rotting писал(а): 2020.06.25, 12:27 Соответственно нужно перебрать в цикле все модели
Сформировать запрос к БД, и получить только нужные модели
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Медленно работает фильтр товаров

Сообщение unknownby »

rotting писал(а): 2020.06.25, 12:27 Работает долго уже на 500 товарах. Понимаю что задача тривиальная, а я решаю её не правильно.
Не увидев код, можно только гадать. Как вариант, переобход всех свойств идёт в представлении. В данной ситуации нужно вынести логику из представления в модель.
Работать должно элементарно.
Вызывается action, дальше идёт в модель и формирует необходимую нам информацию в соответствии с тем, что было в action.
Например, была выбрана категория товаров "Мебель". В модели категории выбираем все товары, которые есть и их свойства. Для примера формирует массив. Возвращаем массив в контроллер, а дальше из него передаем в представление. А в представлении уже только отображаем информацию так, как нам её вернул контроллер.
Ответить