我使用composer为Yii2 dektrium/yii2-user安装了一个扩展,使用的是composer的"require“部分。此扩展包含数据库的迁移。是否可以使用不同于以下内容的控制台语法应用此扩展的迁移:
php yii migrate --migrationPath=@dektrium/yii2-user/migrations但是可以使用一个简单的命令自动运行所有迁移,例如:
php yii migrate有没有可能告诉composer具体的扩展在哪里包含它的迁移?
发布于 2016-03-08 17:49:18
如果要使此过程自动化,可以使用composer的scripts属性。有关更多信息,请访问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
}我更喜欢将在安装-or更新后必须运行的所有命令保存在项目根目录下的文件(例如名为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或composer update之后,都会运行所有命令(这在团队工作中很有用)。
发布于 2016-03-05 20:07:12
我发现只有一个好的解决方案--安装yii2扩展https://github.com/dmstr/yii2-migrate-command
现在我可以很容易地使用命令"php yii migrate“,不用担心我的团队中有人不应用所需的迁移。
感谢其他人的帮助!如果您找到更合适的解决方案,请分享=)
发布于 2016-03-04 16:21:10
https://stackoverflow.com/questions/35779980
复制相似问题