@SlimSavernake

Как объединить два экземпляра ActiveDataProvider yii2?

Здравствуйте. Существуют две сущности: Новости и Статьи. Выводятся на разных страницах используя ActiveDataProvider.
Как мне объединить их для использования в общем списке на одной странице в одном ActiveDataProvider?

$dataProvider = new ActiveDataProvider([
            'query' => News::find(),
        ]);


        $dataProvider2 = new ActiveDataProvider([
            'query' => Articles::find(),
        ]);
  • Вопрос задан
  • 1023 просмотра
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
Существует ли какая-то связь между статьями и новостями? Для чего Вам нужно сделать именно так?
Объясните, чего Вы хотите добиться?
А решений может быть несколько.
Если существует какая-то связь между ними, то можно сделать через связь или через объединение запросов или через join или ещё как-то, но как именно - будет ясно только после Вашего подробного объяснения.

P.S.
Ваш код можно попробовать изменить так:
function actionTag($tag)
    {
        $dataProvider = new ActiveDataProvider([
            'query' => News::find()->anyTagValues($tag)->where(['status' => News::STATUS_ACTIVE]),
        ]);

       $query2 = (new \yii\db\Query())
                      ->from('articles');

      $query->union($query2);
        
        return $this->render('tag', [
            'dataProvider' => $dataProvider,
            'tag' => $tag,
        ]);
    }

Подробней смотрите по ссылке, которую я дал.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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