Добавляем настройки подключения к нескольким БД в Yii2
Для работы с несколькими базами данных в Yii2, нужно добавить все новые соединения в файл config/web.php:
<?php
'db' => require(__DIR__ . '/db.php'),
'myNewDB' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=my_new_database',
'username' => 'user',
'password' => 'password',
'charset' => 'utf8',
],
Также можно использовать отдельный файл для подключения новой базы данных, это делается следующим образом:
<?php 'db' => require(__DIR__ . '/db.php'), 'myNewDB' => require(__DIR__ . '/myNewDB.php'),
Не переименовываете свойство "db" компонента, так как это приведет к ошибке.
Указываем нужную БД для использования в моделе Yii2
Для использования новой базы данных в модели, нужно переопределить конфигурацию "db" установленную по умолчанию, делаем это следующим образом:
<?php
class MyModel extends \yii\db\ActiveRecord {
//...
public static function getDb() {
return Yii::$app->get('myNewDB');
}
//...
}
Функция getDb устанавливает нужное нам соединения с БД для модели.
Работа joinWith() для разных баз данных в Yii2
И так, когда обе таблицы находятся в одной базе данных, например: Author (model \app\models\Author.php) и Post (model \app\models\Post.php) мы делаем так:
$authorsPosts = \app\models\Author::find()
->joinWith('post')
->where(['post.visibility' => \app\models\Post::STATUS_VISIBILITY])
->all();
Такая связь для таблиц находящихся в разных база данных будет выглядеть так:
$authorsPosts = \app\models\Author::find()
->joinWith(['order' => function($query) {
return $query->from('myNewDB.' . \app\models\Post::tableName())
->andWhere(['post.visibility' => \app\models\Post::STATUS_VISIBILITY]);
}])
->all();
При этом таблица Post из базы данных myNewDB (модель: \app\models\Order.php), использует метод для настройки соединения с базой данных getDB().
И напоследок, используйте соединение с несколькими базами данных в одном приложении с умом, не надо делать разные базы для каждой таблицы, но в свою очередь и запихивать множество таблиц в одну базу (особенно при кардинальном отличии области применения) тоже не стоит.
devreadwrite.com



Подборка адаптивных шаблонов для вашей CMS
Статьи по
Как получить и установить HTTPS сертификат на сайта

Комментарии
Комментарии отсутствуют, Вы можете быть первым