@EvgMul

Как в dataProvider передать запрос на получение строк сразу из 3-х таблиц?

Прежде всего интересует, возможно ли это вообще.
Суть такова. У меня есть 3 таблицы несколько различных по свое структуре, но суть их одинакова.
Сейчас я ищу записи следующим образом:
public function search($params)
    {
        $this->load($params);

        if ($this->article_type == 2) {
            $query = Journals::find()
                ->where(['journals.active' => self::ACTIVE])
                ->groupBy('journals.id');
        } elseif ($this->article_type == 3) {
            $query = Parks::find()
                ->joinWith('regionsParkRelation as rpr')
                ->groupBy('parks.id');
        } else {
            $query = Articles::findAll()
                ->joinWith('district')
                ->where(['active' => self::ACTIVE])
        }

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);
//.............

Тоесть смотрю в запросе если пользователь указал фильтр по категории статей, то выдаю ему соответствующие. А если фильтр не указан, то просто показываю ему только одну категорию из одной таблицы.
Собственно вопрос состоит в том, могу ли я в ActiveDataProvider передать запрос, который берет данные из всех 3-х таблиц, если фильтр не указан?
И если такая возможность имеется, подскажите, пожалуйста, как это реализовать?
Заранее благодарен всем отозвавшимся.
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Нет без скотча и топора такое не получится, в лучшем случае нужно сделать union и объеденить запрос. Но у Вас же данные, совершенно разные. Вы в excel даже вручную не сможете объеденить таблицы с разными столбцами, да и их количеством.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы