所以我们正在尝试为我们的项目创建一个服务,但是想把它放在我们可以在其他项目中使用的包中。这个包中会有一些迁移,所以我想知道在composer包中安装迁移并在安装时运行它的过程是什么。
我的想法是让作曲家运行artisan命令来创建一个带有set name的迁移,然后将包中的迁移复制到创建的一个,然后运行artisan migrate命令。
此解决方案是否良好,或者有更好的方法吗?
答案 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"
]
},
如果你想启动编辑器并检索包迁移,你可以自己注入上面的命令。