Задать вопрос
serg_small_developer
@serg_small_developer
Начинающий прогер

Как сделать сортировку?

Всем привет, никак не могу придумать как сделать, есть 2 таблицы, в одной храню Таблица1(фразу, частоту) в другой Таблица2(id фразы, позицию, дату), отношение hasMany, нужно сделать так чтобы вывод был таким
7cf606ac3db6.jpg
сейчас я беру search модель Таблица1 и через GridView делаю вывод фраз, предварительно я получаю последние несколько уникальних дат из Таблица2 через distinct, и потом я просто беру в GridView через функцию из модели получаю нужную позицию по определенному дню
'value' => function ($model) use ($distinct, $key) {
	return $model->ProjectKeywordsPosition($distinct, $key);
}

все выходит как нужно, пагинация по десятку фраз (фраз может быть десятки тысяч), быстрая загрузка page, все нормально, но только не могу понят как сделать сортировку по столбцам дата1, дата2 и т.д., без этой сортировки вообще никак
  • Вопрос задан
  • 81 просмотр
Подписаться 2 Средний 2 комментария
Ответ пользователя Микола К ответам на вопрос (2)
@iSensetivity
бухгалтер, програміст-самоук
Сложно сказать наверняка, но вам стоит подключать связную таблицу через joinWith(), а потом в DataProvider задать столбцьі из другой таблицьі. Пример, у меня тут через joinWith() подключается таблица program.

'sort' => [
                'attributes' => [
                    'id',
                    'program_name' => [
                        'asc' => ['program.name' => SORT_ASC, 'sector.name' => SORT_ASC, ],
                        'desc' => ['program.name' => SORT_DESC, 'sector.name' => SORT_DESC,],
                        'default' => SORT_ASC,
                    ],
],
]
Ответ написан