@lolka02

Почему не работает LIMIT в датапровайдере через union запрос на Yii2?

Создал 2 запроса
$query1 = Model1::fond()->select('id')->andWhere('...');
$query2 = Model2::find()->select('id')->andWhere('...');
$query1->union($query2);
$dataProvider = new ActiveDataProvider([
                'query' => $query1,
                'pagination' => [
                    'pageSize' => 10
                ],
            ]);


Выводятся все записи, а не 10 записей как указано в коде

+ выводятся только данные из второй модели, хотя если сделать получить запрос $query1->createCommand()->getRawSql()
и выполнить в базе берется данные из всех таблиц
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
Вам нужно к запросу добавить ->limin(10)

$query1 = Model1::fond()->select('id')->andWhere('...')->limin(10);
$query2 = Model2::find()->select('id')->andWhere('...')->limin(10);
$query1->union($query2);
$dataProvider = new ActiveDataProvider([
                'query' => $query1,
                'pagination' => [
                    'pageSize' => 10
                ],
]);


Так же можете попробовать ->groupBy() и ->district()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
cr1gger
@cr1gger
Все дороги ведут в Рим — встретимся в Риме!
$query1->union($query2)->all();
Ответ написан
Ваш ответ на вопрос

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

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