实现laravel的migration生成表名注释到数据库

问题:
为什么迁移文件的数据表名没有生成到数据库里?
扩展包实现laravel的migration生成表名注释

扩展包实现laravel的migration生成表名注释

解决思路:
首先回到迁移文件,Schema静态调用create方法
实现laravel的migration生成表名注释到数据库

通过Builder的create方法在模式上创建一个新表,调用build方法,与数据库链接,来构建/修改表。
实现laravel的migration生成表名注释到数据库

再通过Blueprint类的build方法,通过对数据库的链接,把迁移文件行组装好的$grammar数据,通过循环把单条迁移文件数据,调用toSql方法,初步构建表结构。
实现laravel的migration生成表名注释到数据库

通过传递的数据,在循环里打印数据,得到当前迁移文件是创建类型(不同迁移文件增删改实现的方法不同),找到hasMacro方法,传递compileCreate参数进去
实现laravel的migration生成表名注释到数据库

MySqlGrammar类的compileCreate方法,编译一个创建表命令。
实现laravel的migration生成表名注释到数据库

这里是编译一个创建表命令,找到compileCreateEncoding方法(翻译过来就是 编译创建编码),也就是紧接着下面这个图片。
实现laravel的migration生成表名注释到数据库

将字符集规格附加表名注释
实现laravel的migration生成表名注释到数据库

这里需要用到这个第三方扩展包,重写charset 字符集,把迁移文件里$table->comment(‘表名’),通过第三方扩展包,拼接到重写charset字符集后面。

实现laravel的migration生成表名注释到数据库
扩展包地址:
packagist.org/packages/the-jane-wo...

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!