@Cacatuidae

Как правильно сформировать значения фильтра в yii2 для грида?

Если кто сталкивался с таким, то пожалуйста, подскажите, приемлемое и правильное решение на такую задачу:

У нас есть:
1) 2000+ - категорий
2) 1000000+ - страниц
3) 50 - страниц за раз выводится в гриде
Дополнительно:
Выборка формируется на основании разных фильтров из грида.
Т.е. получается такой стандартный грид с фильтрами и сортировкой.

Что нужно:
Нужно в фильтре категорий выводить только те категории, которые используются в данной выборке. Например - у нас найдено 10000 страниц по разным фильтрам, но категорий они используют (все вместе) только 5, вот в фильтре и должны присутствовать только эти 5 категорий.
  • Вопрос задан
  • 459 просмотров
Решения вопроса 1
padlyuck
@padlyuck
/** @var ActiveQuery $query */
$query = clone $dataProvider->query;
$query->select('category_id')->asArray();
Category::find()->where(['id'=>$query])->select(['name','id'])->indexBy('id')->column();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Cacatuidae Автор вопроса
Пока обдумываю такой вариант:
- Беру запрос от провайдера (clone)
- Убираю LIMIT
- Модифицируют SELECT() таким образом, чтобы выводило только нужно значение + distinct. Например - ... select('category_id')->distinct(true) ...
Таким образом, я получу список ID's для фильтра и уже по ним загружу значения фильтров.
Звучит вроде неплохо, но это куча запросов. Ситуации осложнится, если таких фильтров будет несколько (если не все).
Можно конечно подключить еще кеширование при загрузке значений фильтров..

В общем, может у кого есть еще идеи или кто сталкивался с таким?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы