dietercoopman / laravel-showsql
一个用于将数据库查询输出为 SQL 的 Laravel 扩展包
Requires
- php: ^7.4|^8.0|^8.1
- illuminate/support: ^6|^7|^8|^9|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^6.15|^8.0|^9.0
README
Laravel showsql
一个 Laravel 扩展包,可以将特定的 SQL 输出到您喜欢的调试工具、浏览器或日志文件。
使用场景
在开发过程中,您通常希望将注意力集中在单个 SQL 查询上。您可以在您喜欢的调试工具的 SQL 选项卡中查找您的 SQL,但大多数情况下,您的 SQL 并不是唯一执行的 SQL... 因此开始搜索。使用这个包,您可以将 showSql()
添加到您的 QueryBuilder,单个 SQL 将被输出到您的调试工具的日志中。
支持的日志输出是 Laravel Telescope、Laravel Log、Ray、Clockwork、Laravel Debugbar 和您的浏览器。默认情况下,showSql 将尝试记录到 Ray、Clockwork 或 Laravel Debugbar,如果其中一个已安装。如果都安装了,它将输出到所有这些。如果您想使用自己的日志实现,可以向 showSql 传递一个回调函数。
如果您想改变这种行为,可以发布配置文件并更改它。
兼容性
此包可以在 Laravel 6、7、8、9 和 10 中安装
安装
composer require dietercoopman/laravel-showsql --dev
示例
# With the Eloquent Builder Menu::showSql()->get(); Menu::whereId(1)->showSql()->get(); Menu::whereHas('status')->showSql()->get(); # With the Query Builder DB::table('menus')->where('id', '=', 10)->showSql()->get(); DB::table('menus')->join('statuses', 'statuses.id', '=', 'menus.status_id') ->showSql() ->get(); # With a callback $callback = function(string $sql){ Log::info($sql); }; DB::table('products')->where('id', '=', 1)->showSql($callback)->get();
这是一个示例日志输出
配置
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag=showsql-config
Laravel showsql 默认配置为输出到 ray、clockwork 和 Laravel Debugbar。如果您想更改此设置,可以在发布的配置文件中进行更改。
return [ 'to' => [ 'telescope' => false, 'ray' => true, 'clockwork' => true, 'debugbar' => true, 'log' => false, 'browser' => false, ] ];
为什么这不是 Laravel 核心功能的一部分?
我向框架提交了一个 pull request,但被拒绝了。它会给框架本身添加太多额外的逻辑。在这个代码中生成的查询实际上并不是传递给您的数据库引擎的实际语句。实际的 SQL 永远不会存在于框架中。查询和绑定分别传递给数据库引擎,并在那里构建。因此,可能会有一些边缘情况。 您可以在这里查看我的 pull request
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全漏洞
请查看 我们的安全策略 了解如何报告安全漏洞。
致谢
许可协议
MIT 许可协议(MIT)。请参阅 许可文件 了解更多信息。