我已经使用 composer 使用它的“require”部分为 Yii2 dektrium/yii2-user安装了一个扩展。此扩展包含数据库迁移。是否可以使用不是这样的控制台语法从该扩展应用迁移:
php yii migrate --migrationPath=@dektrium/yii2-user/migrations
但使用简单的命令自动运行所有迁移,例如:
php yii migrate
是否可以告诉作曲家具体扩展包含它的迁移?
我已经使用 composer 使用它的“require”部分为 Yii2 dektrium/yii2-user安装了一个扩展。此扩展包含数据库迁移。是否可以使用不是这样的控制台语法从该扩展应用迁移:
php yii migrate --migrationPath=@dektrium/yii2-user/migrations
但使用简单的命令自动运行所有迁移,例如:
php yii migrate
是否可以告诉作曲家具体扩展包含它的迁移?
如果你想使这个过程自动化,你可以使用scripts
. composer
有关更多信息,您可以查看https://getcomposer.org/doc/articles/scripts.md。在您的情况下,您可以通过以下方式实现您的目标composer.json
:
{
// Some codes are here
"scripts": {
"post-update-cmd": [
"php yii migrate --migrationPath=@dektrium/yii2-user/migrations"
],
"post-install-cmd": [
"php yii migrate --migrationPath=@dektrium/yii2-user/migrations"
]
},
// Some codes are here
}
commands
我更喜欢在项目根目录中的文件(例如名为 的文件)上保存安装或更新后必须运行的所有命令,如下所示:
#!/usr/bin/env bash
./yii migrate/up --migrationPath=@vendor/dektrium/yii2-user/migrations
./yii migrate/up
./yii migrate/up --migrationPath=@app/modules/rules/migrations
./yii migrate/up --migrationPath=@app/modules/formsaz/migrations
./yii migrate/up --migrationPath=@app/modules/todo/migrations
./yii formsaz/rules/init
./yii husky/rules/init
并在composer.json
文件上写上它的名字:
{
// Some codes are here
"scripts": {
"post-update-cmd": [
"sh commands"
],
"post-install-cmd": [
"sh commands"
]
},
// Some codes are here
}
所以每次在composer install
or之后composer update
,所有命令都会运行(这对团队合作很有用)。
我发现只有一个好的解决方案 - 安装 yii2 扩展https://github.com/dmstr/yii2-migrate-command
现在我可以轻松地使用命令“php yii migrate”,不用担心我团队中的某个人没有应用所需的迁移。
感谢其他人的帮助!如果您找到更合适的解决方案,请分享=)