Laravel 5内置解决方案
在Laravel 5+中,我们可以使用\DB::getQueryLog()
来检索执行的所有查询。由于查询日志是一项繁琐的操作,并且可能会导致性能问题,因此在L5中默认禁用它,并仅推荐在开发环境中使用。我们可以通过使用方法\DB::enableQueryLog()
来启用查询日志,如[Laravel文档][1]中所述。
内置解决方案中存在的问题
DB::getQueryLog()
函数非常方便,但有时我们希望以平面SQL格式获得转储,这样我们就可以将其复制/粘贴到我们喜欢的MySQL应用程序中(如phpMyAdmin
或Sqlyog
)进行调试或优化。
所以,我需要一个辅助函数,帮助我生成带有以下附加信息的转储:
- 产生转储的文件和行号。
- 从查询中删除反引号。
- 平面查询,因此无需手动更新绑定参数,可以在
phpMyAdmin
等中复制/粘贴SQL
以调试/优化查询。
back-ticks
,生成的 SQL 将更易于阅读和调试,因为该函数的主要工作是调试。感谢vsprintf
函数,它将帮助我减少代码量。 - Muhammad Adnan