在日常的开发中有时候需要动态切换数据库,以便于多个系统之间操作共同的表,但是thinkphp官方只给出了DB:connect这样的方式去切换,当如果是多个后缀表而不想去创建后缀表的model文件时,则这种方式就无效了。且这种方式不支持回滚操作!

另外thinkphp也给出了可以在model内使用$connection来定义当前模型链接的数据库,但如果想动态切换则未能指出,查阅thinkphp的核心文件发现,可以使用setConnection方法来动态定义。


到此我以为解决了 Thinkphp6在模型内动态切换多个数据库多个后缀表 的问题,但当我使用setConnection切换数据库后,在使用suffix定义后缀时,却发现报错,提示就是找不到对应的表,即tp_,这就意味着suffix无效,再次翻找核心文件发现,setConnection切换数据库后,只能使用

setSuffix方法来指定后缀!


至此解决了thinkphp在model内动态切换数据库链接已经动态切换后缀表的问题!


在此吐槽下thinkphp的文档,文档内压根没有对核心文件的方法进行阐释说明,如果遇到此类棘手问题又是小白,根本无法解决!