如何在yii2中正确指定迁移命名空间类?

如何在yii2中正确指定迁移命名空间类?,yii2,migrate,Yii2,Migrate,有人能告诉我如何正确指定我的模块迁移命名空间吗?正如我在文档中看到的,它是: return [ 'controllerMap' => [ 'migrate' => [ 'class' => 'yii\console\controllers\MigrateController', 'migrationNamespaces' => [ 'app\migrations', // Common migrations

有人能告诉我如何正确指定我的
模块迁移命名空间吗?正如我在文档中看到的,它是:

return [
'controllerMap' => [
    'migrate' => [
        'class' => 'yii\console\controllers\MigrateController',
        'migrationNamespaces' => [
            'app\migrations', // Common migrations for the whole application
            'module\migrations', // Migrations for the specific project's module
            'some\extension\migrations', // Migrations for the specific extension
            ],
        ],
    ],
];
但是没有解释我应该在哪个文件中写入命令。我在config.php中尝试过,如下所示:

    'controllerMap' => [
    'migrate' => [
        'class' => 'yii\console\controllers\MigrateController',
        'migrationNamespaces' => [
            'app\modules\adBoard\migrations',
        ],

但我不知道应该编写哪个控制器类。有人能告诉我我必须在哪个文件中指定它,以及如何正确指定它吗

如果您参考本文档

全局配置命令

而不是输入相同的选项 值每次运行迁移命令时,都可以对其进行配置 在应用程序配置中一劳永逸,如下所示:

使用上述配置,每次运行migration命令时,都将使用backend_migration表来记录 移民历史。您不再需要通过 migrationTable命令行选项

名称空间迁移

从2.0.10开始,您可以为 迁移类。您可以指定迁移的列表 名称空间通过迁移名称空间。将名称空间用于 迁移类允许您为迁移使用多个源位置 移民。例如:

这个配置应该放在您的控制台/config/main.php中


但对于名称空间迁移,请记住,从2.0.10开始,根据您的yii2模板应用程序(
basic
advanced
),特定于“控制台”的设置的位置位于不同的目录中

对于basic模板,控制台从
/config/console.php
文件获取设置

对于advanced模板,您应该编辑
/console/config/main.php
文件

请记住,console的设置不会影响web设置,因此,如果要在整个项目中注册某个组件,则必须在两个文件中复制该组件


另外,我想补充一个关于高级模板的详细信息,即它具有前端后端子应用的公共设置,位于
/common/config/main.php
,但是这些设置在控制台命令中并不常见。

我想与大家分享一下我在Yi2名称空间迁移方面的经验

场景

  • 我使用的是高级模板
  • 我在
    控制台/migrations
    文件夹中有100次旧迁移
  • 我有一个新的扩展,它有名称空间的迁移
  • 我在旧文件夹
    控制台/migrations
    中有新的迁移
  • 我想在新文件夹
    console/migrations/namespaced
    中使用名称空间创建将来的迁移。我希望保留位于
    控制台/migrations
    的所有旧迁移
  • console/config/main.php
    配置适合我

    return [
    'controllerMap' => [
        'migrate' => [
            'class' => \yii\console\controllers\MigrateController::class,
            'migrationNamespaces' => [
                'console\migrations\namespaced',
                'yii\swiftsmser\migrations'
            ]
        ],
    ],
    //.... more configurations
    ];
    
    对于上述配置,当我执行
    yii migrate
    时,它包括上述所有文件夹

    注意:创建新的迁移。只需确保使用如下命令即可


    yii migrate/create console\\migrations\\namespaced\\dlttemplatesforms

    刚刚尝试将我提到的命令输入到
    console.php
    文件(因为
    basic
    模板),但没有工作:(我无法运行迁移,因为名称空间,当我删除它时,它工作正常
     return [
         'controllerMap' => [
             'migrate' => [
                 'class' => 'yii\console\controllers\MigrateController',
                 'migrationNamespaces' => [
                     'app\migrations', // Common migrations for the whole application
                     'module\migrations', // Migrations for the specific project's module
                     'some\extension\migrations', // Migrations for the specific extension
                 ],
             ],
         ], ];
    
    return [
    'controllerMap' => [
        'migrate' => [
            'class' => \yii\console\controllers\MigrateController::class,
            'migrationNamespaces' => [
                'console\migrations\namespaced',
                'yii\swiftsmser\migrations'
            ]
        ],
    ],
    //.... more configurations
    ];