@akula22

Как в yii2 ArrayDataProvider сделать лимит в группе?

Доброго дня.
Есть база
1 group=1
2 group=1
3 group=2
4 group=2
Мне надо вывести в гриде только по 1 записи из каждой группы

Сейчас все это дело выводится таким запросом
$query = TourTable::find()
            ->with(['user', 'profile', 'team'])
            ->where(['tour_id' => $tour_id]);

        $dataProvider = new ArrayDataProvider([
            'allModels' => $query->all(),
            'pagination' => false,
            'sort' => [
                'defaultOrder' => ['group' => SORT_ASC, 'total' => '', 'difference' => ''],
                'attributes' => [
                    'group',
                    'total',
                 
                    'difference',
                ],
            ],
        ]);


Можно это сделать в запросе, если нет то может в самом гриде уже убрать лишние?
Подскажите как
  • Вопрос задан
  • 574 просмотра
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега MySQL
Web developer
$query = TourTable::find()
            ->with(['user', 'profile', 'team'])
            ->where(['tour_id' => $tour_id])
            ->groupBy('group');

Но учтите, что при группировке использовать можно либо поля группировки, либо агрегатные функции от остальных полей. Подробнее см. https://dev.mysql.com/doc/refman/5.7/en/group-by-f...
Если все равно, какое из значений выбрать (когда их несколько в группе), можно использовать ANY
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы