dietercoopman/laravel-showsql

一个用于将数据库查询输出为 SQL 的 Laravel 扩展包

v1.5 2024-03-11 18:54 UTC

This package is auto-updated.

Last update: 2024-09-12 22:02:11 UTC


README

showsql

Latest Version on Packagist Downloads

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();

这是一个示例日志输出

showsql example

配置

您可以使用以下命令发布配置文件

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)。请参阅 许可文件 了解更多信息。