如何在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
];