Стоит задача сделать сортировку постов: за 1-день, за 6-дней, за 30-дней, за всё время.
По моему примеру работает только сортировка "за всё время".
Есть 2-е таблички. user и statistics_post(id, user_id, post, date(в формате"2016-11-24")).
Модель SearchUser.
Код: Выделить всё
$query = User::find()
->select(['{{%user}}.*',
'post_total'=> new Expression('COUNT({{%statistics_post}}.id)'), // Работает
// А дальше я фантазировал как мог :), но всё впустую...
'post_day' => new Expression('COUNT({{%statistics_post}}.id)', ['where'=>'TO_DAYS(NOW()) - TO_DAYS({{%statistics_post}}.date) < 1']),
'post_week' => ...,
'post_month' => ...,
])
->joinWith(['statistics']) // связь hasMany.
->groupBy('{{%user}}.id');
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => [
'defaultOrder' => ['post_total'=>SORT_DESC],
'attributes'=>[
'post_day'
'post_week'
'post_month
'post_total',
]
]
]);
Спасибо!