#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
команда использует конфигурации консоли, поэтому убедитесь, что в вашей сети и в конфигурации консоли определены оба компонента подключения.