如何使用扩展包生成 migration 文件

事情大概是这样,之前有多个项目,现在希望有一个小功能。传统的会写一份代码,然后复制粘贴到其他项目。然后我想写个扩展包,这样就方便多了,但是之前生成迁移文件的时候都是直接使用命令行的,想知道怎么在扩展包中生成 migration 文件,见过 DBExport 和其他第三方包这样使用过,没有搜到相关资料,希望提供一点思路或者资料~

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 8

可以看看xethron/migrations-generator扩展包,可以反向生成迁移migration文件

4年前 评论
____ (楼主) 4年前

能想到的方法就是在现有的 laravel 项目中创建迁移文件,再 copy 到扩展包 :joy:

4年前 评论

或许正常的扩展包开发流程应该是这样 博客:新手掌握 Laravel 扩展包开发

4年前 评论

我看一些扩展包是这么做的:扩展包里有一些迁移文件,安装扩展包的时候将这些迁移文件挪到外面

4年前 评论
JaguarJack

你可以在扩展包写个自定义命令,laravel 的 migration 支持 path

4年前 评论

@三斤和他的喵 @JaguarJack 楼主的意思大概是他在开发扩展包的时候想创建迁移文件,但是不能像在 laravel 项目中使用 php artisan make:migration 命令

4年前 评论
____ (楼主) 4年前

在你扩展包里 ServiceProviderboot 方法中添加如下:

$this->publishes([
   __DIR__.'/../../database/migrations/' => database_path('migrations')
], 'package.migration');

发布迁移文件到项目的 migrations 文件夹,执行:

php artisan vendor:publish --tag=package.migration

这种方式的好处是对于使用者来说要修改迁移文件比较方便。

目录结构如下

.
├── README.md
├── composer.json
├── database
│   └── migrations
└── src
4年前 评论
GeorgeKing (作者) 4年前
____ (楼主) 4年前

文档的扩展包开发就有 数据库迁移

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!