работа с двумя базами данных в yii 2

У меня есть две базы данных с этим файлом конфигурации

    'db' => require(__DIR__ . '/db.php'),
'db2' => require(__DIR__ . '/db2.php'),

файл db.php

return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;port=**;dbname=**',
'username' => '**',
'password' => '**',
'charset' => 'utf8'];

файл db2.php

return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;port=**;dbname=**',
'username' => '**',
'password' => '**',
'charset' => 'utf8'];

когда я хочу использовать конфигурацию базы данных db2 при переносе, я получаю ошибку

public function init()
{
$this->db = 'db2';
parent::init();
}

public function up()
{
$this->createTable('logs', [
'id' => $this->primaryKey()->unsigned(),
'type' => $this->string(8)->notNull(),
'data' => $this->string(255)->notNull(),
'created_at' => $this->integer()->notNull()->unsigned(),
]);
}

public function down()
{
$this->dropTable('logs');
}

ошибка:

Исключение ‘yii \ base \ InvalidConfigException’ с сообщением ‘Не удалось создать экземпляр компонента или класса «db2».’

кто-нибудь пробовал использовать миграцию с двумя базами данных?

0

Решение

Не переопределяйте вашу базу данных в методе init, вместо этого сделайте это в атрибуте:

public $db = 'db2';

public function up()
{
$this->createTable('logs', [
'id' => $this->primaryKey()->unsigned(),
'type' => $this->string(8)->notNull(),
'data' => $this->string(255)->notNull(),
'created_at' => $this->integer()->notNull()->unsigned(),
]);
}

public function down()
{
$this->dropTable('logs');
}

Я просто снова прочитал код, и ваш путь был правильным при переопределении метода init, но вы добавили свою конфигурацию в файл console.php?

'db' => require(__DIR__ . '/db.php'),
'db2' => require(__DIR__ . '/db2.php'),

они также должны быть в файле console.php.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]