Имеется следующий код, выборка из базы данных самых посещаемых статей:
if (!$data = Yii::$app->cache->get('recent_list_post')) {
$data = Post::find()
->with(['imageR', 'categoryR'])
->active()
->orderBy('hits DESC')
->limit(4)
->all();
$dependency = new DbDependency([
'sql' => 'SELECT SUM(hits) FROM ' . Post::tableName() . 'WHERE status=' . Post::STATUS_ACTIVE . ' ORDER BY hits DESC limit 4',
]);
Yii::$app->cache->set('recent_list_post', $data, 60*60, $dependency);
}
$this->data = $data;
Как правильно составить DbDependency чтобы отследить изменился ли состав 4 самых посещаемых статей?
Казалось бы SUM(hits) или SUM(id) или SUM(hits*id) подошло бы по логике, но SUM не воспринимает LIMIT а высчитывает сумму по всем записям в таблице.
Как переписать запрос чтобы DbDependency sql получить что то вроде хеша из id или hits последних 4 статей?