问题:
为什么迁移文件的数据表名没有生成到数据库里?
解决思路:
首先回到迁移文件,Schema静态调用create方法
通过Builder的create方法在模式上创建一个新表,调用build方法,与数据库链接,来构建/修改表。
再通过Blueprint类的build方法,通过对数据库的链接,把迁移文件行组装好的$grammar数据,通过循环把单条迁移文件数据,调用toSql方法,初步构建表结构。
通过传递的数据,在循环里打印数据,得到当前迁移文件是创建类型(不同迁移文件增删改实现的方法不同),找到hasMacro方法,传递compileCreate参数进去
MySqlGrammar类的compileCreate方法,编译一个创建表命令。
这里是编译一个创建表命令,找到compileCreateEncoding方法(翻译过来就是 编译创建编码),也就是紧接着下面这个图片。
将字符集规格附加表名注释
这里需要用到这个第三方扩展包,重写charset 字符集,把迁移文件里$table->comment(‘表名’),通过第三方扩展包,拼接到重写charset字符集后面。
扩展包地址: