有人可以解释我如何正确指定我的modules migration namespaces
?正如我在文档中看到的那样:
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',
],
但我不知道应该写哪个控制器类。有人能告诉我在哪个文件中我必须指定它以及如何正确指定它?
答案 0 :(得分:1)
如果您参考此文档
全局配置命令
而不是输入相同的选项 每次运行迁移命令时,都可以配置它 在应用程序配置中一劳永逸,如下所示:
return [
'controllerMap' => [
'migrate' => [
'class' => 'yii\console\controllers\MigrateController',
'migrationTable' => 'backend_migration',
],
], ];
使用上述配置,每次运行migration命令时,都会使用backend_migration表进行记录 迁移历史。您不再需要通过 migrationTable命令行选项。
命名空间迁移
从2.0.10开始,您可以使用命名空间 迁移课程。您可以指定迁移列表 通过migrationNamespaces命名空间。使用命名空间 迁移类允许您使用多个源位置 迁移。例如:
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
],
],
], ];
此配置应放在您的console / config / main.php
中但是对于名称空间的迁移记忆,从2.0.10开始
答案 1 :(得分:1)
取决于您的yii2-template应用程序(basic
或advanced
),“控制台”特定设置的位置位于不同的目录中。
对于基本模板,从<app>/config/console.php
文件中获取控制台设置。
对于高级模板,您应该编辑<app>/console/config/main.php
文件。
请记住,您的控制台设置不会影响Web设置,因此如果您想在整个项目中注册某个组件,则必须在两个文件中复制它。
P.S。我想添加一个关于高级模板的详细信息,它是针对前端和后端子应用程序的常用设置在<app>/common/config/main.php
中,但这些设置在控制台命令中并不常见。
答案 2 :(得分:0)
我想分享我在 Yii2 命名空间迁移方面的经验。
场景
console/migrations
文件夹中有 100 多个旧迁移。console/migrations
中有新的迁移。console/migrations/namespaced
中创建具有命名空间的未来迁移。我想保持位于 console/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\\DLTTemplatesForSMS