Thinkphp6 数据迁移文件生成包
目的
如果你的数据库有几十或者成百上千的表,此时还未使用或者正想使用数据库迁移功能,如果写入这么文件的将是非常巨大的体力活。这个包的意义就是帮你减少这种不必要的体力劳动,轻松迁移自己的数据库,可以很好的帮助实现文件迁移。目前提供了 Thinkphp6.0+ 版本以上的支持
如何使用
composer require jaguarjack/migration-generator:dev-master
复制代码
使用
php artisan migration:generate
复制代码
项目地址 https://github.com/yanwenwu/migration-generator
laravel
php artisan migration:generate
php think migration:generate
继承 \Doctrine\DBAL\Types\Type
class newType extend \Doctrine\DBAL\Types\Type
{}
主要实现两个方法
publicfunctiongetSQLDeclaration(array$fieldDeclaration,AbstractPlatform$platform) {return$platform->getIntegerTypeDeclarationSQL($fieldDeclaration); }publicfunctiongetName() {return'TypeName'; }
注入
(newMigrateGenerator('thinkphp'))->registerNewType(['TypeName'=>TypeClass, ]);
就是对应框架 migration 的格式
继承实现
classType extendJaguarJack\MigrateGenerator\Migration\Columns\AbstractType{}
继承这个基类可以获取两个信息 - 获取当前 column 的所有信息 - 整个表结构的原始信息 这里可以得到 DBAL 不会提供的信息
必须实现的两个方法
因为现在就支持了 laravel 和 thinkphp 所有就定义了这两个方法
publicfunctionlaravelMigrationColumn():stringpublicfunctionthinkphpMigrationColumn():string
注入
(newMigrateGenerator('thinkphp'))->registerNewTypeParse(['TypeClassName'=>ParseTypeClass]);
TypeClassName 指的就是新类型的类的名称 ParseTypeClass 也必须和 TypeClass 相同,这是约定,方便更好的解析。
除了提供的自定义的命令外,通过两个对外接口自己生成文件
$migrateGenerat->getDatabase
这个方法可以获取表信息以及字段信息等等
$migrateGenerator->getMigrationContent
这个方法可以获取解析后 migration 文件内容
有兴趣的可以尝试,如果有任何问题可以在这里或者 issue 提给我,我会及时修改。好的建议也欢迎。
网友评论