Как реализовать сортировку по нетривиально генерируемому полю в GridView?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Matvik
Сообщения: 194
Зарегистрирован: 2013.06.21, 02:32

Как реализовать сортировку по нетривиально генерируемому полю в GridView?

Сообщение Matvik »

Тут http://www.yiiframework.com/wiki/621/fi ... w-yii-2-0/
и тут http://www.yiiframework.com/wiki/679/fi ... w-yii-2-0/
хорошо расписано, как реализовать сортровку и поиск. Но - непонятно, что делать, если у нас нетривиально генерируемое поле (например, не простое агрегируемое поле, как сумма значений из связанной таблицы, а, допустим, самое встречаемое значение для данного юзера, или любое другое, которое получается через какую-нибуть замысловатую функцию). Тогда отображение делаеться легко (или через геттер в модели, или через анонимную функцию в виджете). Но как реализовать сортировку в таком случае? Тут уже не получится просто написать:

Код: Выделить всё

SUM(amount) as order_amount'
, как в примере с суммой заказов. Как быть в таком случае?
yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

Re: Как реализовать сортировку по нетривиально генерируемому полю в GridView?

Сообщение yan »

если количество записей небольшое - можно получить все записи, отсортировать и использовать через ArrayDataProvider, если записей много, то можно сделать в таблице поле для этого значения и апдейтить его из пхп по крону и(или) при изменении записи
Matvik
Сообщения: 194
Зарегистрирован: 2013.06.21, 02:32

Re: Как реализовать сортировку по нетривиально генерируемому полю в GridView?

Сообщение Matvik »

yan писал(а):если количество записей небольшое - можно получить все записи, отсортировать и использовать через ArrayDataProvider, если записей много, то можно сделать в таблице поле для этого значения и апдейтить его из пхп по крону и(или) при изменении записи
Спасибо, буду пробовать. Интересно
Ответить