Thinkphp6 逆向、反向数据迁移文件生成包

2020-07-15  本文已影响0人  luke8327

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

ThinkPHP

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 提给我,我会及时修改。好的建议也欢迎。

上一篇下一篇

猜你喜欢

热点阅读