有没有办法更改应用 Yii2 迁移的默认数据库方案?

Is there a way to change the default DB scheme where Yii2 migrations are applied?

我正在使用 Yii2 框架,更具体地说,我需要使用迁移在我的网络应用程序中实施 RBAC。

我知道存在以下命令自动生成 DbManager 用于存储其数据的 4 个表:

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

但问题是那些表是在“public”方案中生成的。我需要在另一个方案(如“appscheme”)中生成这些表。

我是否需要生成我自己的这些迁移版本,或者有没有办法使用该命令更改默认方案?

(如果这很重要,我正在使用 Postgresql)

您可以通过 --db 参数告诉迁移命令它应该使用哪个数据库连接组件。为此,您必须在应用程序配置中为其他方案配置连接。假设您的配置如下所示:

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

默认情况下,迁移将使用 db 组件。但是我们希望它使用 db2 组件。所以我们需要像这样 运行 迁移:

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

小心,yii 命令使用控制台配置,因此请确保您在 Web 和控制台配置中都定义了连接组件。