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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 8

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

3个月前 评论
____ (楼主) 3个月前
王成涛

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

3个月前 评论
王成涛

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

3个月前 评论

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

3个月前 评论
JaguarJack

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

3个月前 评论
王成涛

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

3个月前 评论
____ (楼主) 3个月前

在你扩展包里 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
3个月前 评论
GeorgeKing (作者) 3个月前
____ (楼主) 3个月前

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

3个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!