У меня есть Listview в yii2 для отображения элементов, в этом случае элементы представляют собой миниатюры видео, и я хочу отображать только 5, я пытался ограничить запрос...
$dataProvider = new ActiveDataProvider([
'query' => Video::find()
->select(['video.*', 'COUNT(video_like.video_id) AS countlike'])
->joinWith(['likes'])
->groupBy(['video_like.video_id','video.video_id'])
->limit(5)
->orderBy(['countlike' => SORT_DESC])
]);
Но это не работает... мой список:
<?php echo \yii\widgets\ListView::widget([
'dataProvider' => $dataProvider,
'pager' => [
'class' => \yii\bootstrap4\LinkPager::class,
],
'itemView' => '_video_item',
'layout' => '<div class = "d-flex flex-wrap">{items}</div>{pager}',
'itemOptions' => [
'tag' => false,
],
]) ?>
Проверьте этот документ.
Это должно сработать для вас:
$dataProvider = new ActiveDataProvider([
'query' => Video::find()
->select(['video.*', 'COUNT(video_like.video_id) AS countlike'])
->joinWith(['likes'])
->groupBy(['video_like.video_id','video.video_id'])
->orderBy(['countlike' => SORT_DESC]),
'pagination' => [
'pageSize' => 5,
]
]);
Исправлено, удачного взлома ;)
Спасибо!! это работает, мне нужно только добавить запятую в конце '-> orderBy (['countlike' => SORT_DESC])'