Как правильно сформировать значения фильтра в yii2 для грида?
Если кто сталкивался с таким, то пожалуйста, подскажите, приемлемое и правильное решение на такую задачу:
У нас есть:
1) 2000+ - категорий
2) 1000000+ - страниц
3) 50 - страниц за раз выводится в гриде
Дополнительно:
Выборка формируется на основании разных фильтров из грида.
Т.е. получается такой стандартный грид с фильтрами и сортировкой.
Что нужно:
Нужно в фильтре категорий выводить только те категории, которые используются в данной выборке. Например - у нас найдено 10000 страниц по разным фильтрам, но категорий они используют (все вместе) только 5, вот в фильтре и должны присутствовать только эти 5 категорий.
Cacatuidae: ответ. как бы вы делали это на голом мускуле? было бы это решение для вас приемлемым? я думаю что это вполне приемлемо, т.к. данный пример проверил у себя и в итоге получил на один запрос больше чем было. Category::find()->where(['id'=>$query])... формирует запрос к таблице category, к которой "приджойнивает" клонированный запрос.
Пока обдумываю такой вариант:
- Беру запрос от провайдера (clone)
- Убираю LIMIT
- Модифицируют SELECT() таким образом, чтобы выводило только нужно значение + distinct. Например - ... select('category_id')->distinct(true) ...
Таким образом, я получу список ID's для фильтра и уже по ним загружу значения фильтров.
Звучит вроде неплохо, но это куча запросов. Ситуации осложнится, если таких фильтров будет несколько (если не все).
Можно конечно подключить еще кеширование при загрузке значений фильтров..
В общем, может у кого есть еще идеи или кто сталкивался с таким?