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

Laravel框架
456
0
0
2022-09-21

问题:

为什么迁移文件的数据表名没有生成到数据库里?

扩展包实现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...