Есть ли способ изменить схему БД по умолчанию, в которой применяются миграции Yii2?

#postgresql #yii2 #frameworks #migration #rbac

Вопрос:

Я использую фреймворк Yii2, и, если быть более конкретным, мне нужно использовать миграции для реализации RBAC в моем веб-приложении.

Я знаю, что существует следующая команда для автоматического создания 4 таблиц, которые DBManager использует для хранения своих данных:

yii миграция —Путь миграции=@yii/rbac/миграции

Но проблема в том, что эти таблицы создаются в «общедоступной» схеме. Мне нужно, чтобы эти таблицы создавались в другой схеме, такой как «appscheme».

Нужно ли мне создавать свою собственную версию этих миграций или есть способ изменить схему по умолчанию с помощью этой команды?

(Я использую Postgresql, если это важно)

Ответ №1:

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

 [
    // default scheme
    'db' => [
        'class' => 'yiidbConnection',
        'dsn' => 'pgsql:host=localhost;dbname=public',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ],
    //other scheme
    'db2' => [
        'class' => 'yiidbConnection',
        'dsn' => 'pgsql:host=localhost;dbname=appscheme',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ],
    // ... other configurations
];
 

По умолчанию при миграции будет использоваться db компонент. Но мы хотим, чтобы он использовал db2 компонент. поэтому нам нужно выполнить миграцию следующим образом:

 yii migrate --migrationPath=@yii/rbac/migrations --db=db2
 

Будьте осторожны, yii команда использует конфигурации консоли, поэтому убедитесь, что в вашей сети и в конфигурации консоли определены оба компонента подключения.