Задать вопрос

Yii2 ActiveRecord Как сделать JOIN таблиц между двумя БД mysql?

Есть 2 модели KladrCity и Area, каждая из них находится в разных БД обе MYSQL.

В KladrCity
public static function getDb() {
        return \Yii::$app->dbKladr;
}


В Area
public function getCity()
{
        return $this->hasOne(KladrCity::className(), ['code' => 'city_id']);
}


При JOIN
$models = \common\models\Area::find()->joinWith('city');


Вываливается ошибка, что в DB нет таблицы city.
То есть при JOIN activerecord строит запрос без учета базы данных. В итоге запрос строится в ту базу в которой находится таблица к которой происходит JOIN.

Вот и возникает вопрос как в YII2 сделать JOIN двух таблиц из разных БД.
  • Вопрос задан
  • 1825 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Onskills
    PHP: базовый курс
    1 месяц
    Далее
  • teamcoding
    TC200PY Разработка PHP веб-приложений на Yii2. Шаблон приложения advanced
    3 месяца
    Далее
Решения вопроса 1
@V_Tjuryakin
Перфекто
JOIN работает внутри вашей БД, он не может сделать это к другой базе данных. В таких случаях делается 2 запроса, выбираем все нужные area - на php как пример выбираем через array_unique - только уникальные city_id, делаем запрос к базе данных с city where in (city ids) - назначаем чтобы ключ массива был city_id, в любой момент получаем город для area по типу такого: $city[$area->city_id]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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