美文网首页
Thinkphp6 逆向、反向数据迁移文件生成包

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

作者: luke8327 | 来源:发表于2020-07-15 09:20 被阅读0次

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

    相关文章

      网友评论

          本文标题:Thinkphp6 逆向、反向数据迁移文件生成包

          本文链接:https://www.haomeiwen.com/subject/fktdhktx.html