epigra / pmgen
此包已废弃,不再维护。未建议替代包。
Laravel 包迁移生成器
dev-master
2016-12-22 14:34 UTC
Requires
- php: >=5.5.9
- laravel/framework: 5.*
This package is not auto-updated.
Last update: 2020-01-23 18:54:08 UTC
README
#Epigra 包迁移生成器 允许您为任何 Laravel 支持的包添加迁移生成支持。
##使用方法
假设您正在开发一个名为 newpackage
的包,您在 resources/generators
目录下预先定义了模板,而您的迁移命令位于 console
目录。
namespace YourNamespace\Newpackage\Console; use Epigra\PMGen\MigrationGenerator; class MigrationCommand extends MigrationGenerator { protected $signature = 'newpackage:migrate'; protected $description = 'Creates a migrations for questionable items.'; }
现在您可以通过以下方式从您的包服务提供者中注册此命令
public function boot(){ $this->commands('command.yourpackagename.migrate'); } public function register(){ $this->app->singleton('command.yourpackagename.migrate', function ($app) { return new \YourNamespace\Newpackage\Console\MigrationCommand(); }); } public function provides(){ return array('command.yourpackagename.migrate'); }
为了使任何目标目录更改从父类中,您可以重新定义函数
public function getModuleDirectory() { return dirname((new \ReflectionClass(static::class))->getFileName()).'/../'; } public function getGeneratorsDirectory() { return $this->moduleDirectory.'/Resources/generators'; }
###MigrationGenerator 的基本逻辑流程
- 获取模块目录
调用类目录 + .. /
或通常为你的vendor/yourpackage/src(假设您从src\Console\YourClass调用) - 决定生成器目录 ``模块目录 + '/Resources/generators'`
- 获取生成器目录中的所有文件,并
- 编译相关的 blade 文件
- 将这些文件以当前时间戳保存到
database/migrations
目录中,如果它们尚未创建。(可能需要composer dump-autoload)
- 如果您需要排序您的迁移(出于某种原因,如外键引用等),您可以在生成器目录中添加
一个数字和一个下划线
使它们按名称可排序(如0_create_xxx_table.php
,1_create_yyy_table.php
)。这样,迁移也可以按顺序生成。