1

我已经使用 composer 使用它的“require”部分为 Yii2 dektrium/yii2-user安装了一个扩展。此扩展包含数据库迁移。是否可以使用不是这样的控制台语法从该扩展应用迁移:

php yii migrate --migrationPath=@dektrium/yii2-user/migrations

但使用简单的命令自动运行所有迁移,例如:

php yii migrate

是否可以告诉作曲家具体扩展包含它的迁移?

4

3 回答 3

3

如果你想使这个过程自动化,你可以使用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 installor之后composer update,所有命令都会运行(这对团队合作很有用)。

于 2016-03-08T09:49:18.190 回答
1

我发现只有一个好的解决方案 - 安装 yii2 扩展https://github.com/dmstr/yii2-migrate-command

现在我可以轻松地使用命令“php yii migrate”,不用担心我团队中的某个人没有应用所需的迁移。

感谢其他人的帮助!如果您找到更合适的解决方案,请分享=)

于 2016-03-05T12:07:12.143 回答
0

Yii2:允许从多个路径迁移

于 2016-03-04T08:21:10.290 回答