2016-10-03 79 views
0

所以我们试图为我们的项目创建一个服务,但是想把它放在我们可以在其他项目中使用的包中。在这个软件包中会有一些迁移,所以我想知道将迁移包含在composer包中并在安装时运行的过程。执行从作曲家软件包的迁移安装

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

这个解决方案是否好,还是有更好的方法呢?

回答

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启动迁移,可以在composer.json中添加关键“脚本”,然后启动composer。 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" 
     ] 
    }, 

然后你可以注入自己,如果你要启动的作曲家和检索包迁移上面的命令。