从composer包安装执行迁移

时间:2016-10-03 17:32:33

标签: laravel laravel-5.2 composer-php

所以我们正在尝试为我们的项目创建一个服务,但是想把它放在我们可以在其他项目中使用的包中。这个包中会有一些迁移,所以我想知道在composer包中安装迁移并在安装时运行它的过程是什么。

我的想法是让作曲家运行artisan命令来创建一个带有set name的迁移,然后将包中的迁移复制到创建的一个,然后运行artisan migrate命令。

此解决方案是否良好,或者有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

如果您想创建一个包laravel,documentation使您有机会通过在ServiceProvider包中添加迁移来从包中添加迁移

/**
 * src/NameAuthor/NamePackage/ServiceProvider.php
 * migrations package inside src/database/migrations folder by example
 *
 */
public function boot()
{
    $this->publishes([
        __DIR__.'/database/migrations/' => database_path('migrations')
    ], 'migrations');
} 

然后你可以运行命令

php artisan vendor:publish --tag=migrations

如果您希望使用编辑器直接启动迁移,则可以添加键"脚本"在composer.json中,只是启动作曲家。关于这一点的The documentation of composer更清楚,但这是laravel的laravel composer.json的一个例子

"scripts": {
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },

如果你想启动编辑器并检索包迁移,你可以自己注入上面的命令。