Как сделать подключение сразу к нескольким базам данных?

В Yii можно легко настроить подключение к нескольким базам данных. Для этого необходимо выполнить следующие шаги:

1. Настройка конфигурации баз данных: откройте файл config/db.php в корне вашего проекта Yii. В этом файле вы должны определить массив $db для каждой базы данных, к которой вы хотите подключиться.

Пример:

return [
    'class' => 'yiidbConnection',
    'dsn' => 'mysql:host=localhost;dbname=db1',
    'username' => 'user1',
    'password' => 'password1',
    'charset' => 'utf8',
];

return [
    'class' => 'yiidbConnection',
    'dsn' => 'mysql:host=localhost;dbname=db2',
    'username' => 'user2',
    'password' => 'password2',
    'charset' => 'utf8',
];

2. Создание компонента для работы с несколькими базами данных: откройте файл config/web.php и добавьте следующий код в раздел components:

'components' => [
    // создание компонента db1 для подключения к базе данных db1
    'db1' => require(__DIR__ . '/db.php'),
   
    // создание компонента db2 для подключения к базе данных db2
    'db2' => require(__DIR__ . '/db.php'),
    'on beforeRequest' => function ($event) {
        Yii::$app->db1->open();
        Yii::$app->db2->open();
    },
    'on afterRequest' => function ($event) {
        Yii::$app->db1->close();
        Yii::$app->db2->close();
    },
],

В этом коде мы создаем два компонента db1 и db2, и каждый из них получает свою конфигурацию базы данных из файла db.php. На этапе открытия и закрытия каждого запроса Yii автоматически устанавливает соединения с базами данных.

3. Использование нескольких баз данных: теперь вы можете использовать db1 и db2 в любом месте вашего приложения Yii следующим образом:

$sql = 'SELECT * FROM table1';
$rows = Yii::$app->db1->createCommand($sql)->queryAll();

$sql2 = 'SELECT * FROM table2';
$rows2 = Yii::$app->db2->createCommand($sql2)->queryAll();

Здесь мы выполняем SELECT запросы к таблицам table1 и table2 в базах данных db1 и db2 соответственно.

Таким образом, вы можете легко настроить и использовать несколько баз данных в Yii, обеспечивая масштабируемость и гибкость для вашего приложения.