Laravel 查看 SQL 的方式

文章目录

    • 方法一:使用 Laravel 的内置日志系统
    • 方法二:使用 Laravel Debugbar 扩展
    • 方法三:使用 Laravel Telescope
    • 方法四:使用 `DB::getQueryLog` 方法
    • 方法五:使用 `toSql()` 方法
    • 方法六:使用外部工具
      • 1. 启用 MySQL 的查询日志记录功能
      • 2. 使用 PHPStorm 插件

在多年的 Laravel 开发经验中,小编整理了多种方法,帮助您查看 Laravel 执行的 SQL 查询。希望其中一种适合您的需求。

方法一:使用 Laravel 的内置日志系统

Laravel 提供了强大的日志系统,您可以使用 DB::listen 方法监听数据库查询事件并将查询日志记录到日志文件中。要使用这种方法,您可以在 AppServiceProviderboot 方法中添加以下代码:


use Illuminate\Support\Facades\DB;

public function boot()

{

    DB::listen(function ($query) {

        \Log::info($query->sql, ['bindings' => $query->bindings, 'time' => $query->time]);

    });

}

这将把每个执行的 SQL 查询记录到日志文件中,包括查询语句、绑定的参数和执行时间。

方法二:使用 Laravel Debugbar 扩展

Laravel Debugbar 是一个流行的调试工具,它提供了一个易于使用的界面,用于查看各种调试信息,包括 SQL 查询。您可以使用 Composer 安装 Debugbar:


composer require barryvdh/laravel-debugbar

然后,将 Barryvdh\Debugbar\ServiceProvider 添加到您的 config/app.phpproviders 数组中。之后,您可以在浏览器中查看每个请求的 SQL 查询以及执行时间。

方法三:使用 Laravel Telescope

Laravel Telescope 是 Laravel 官方提供的一个调试和监控工具,它允许您查看应用程序执行的各种操作,包括 SQL 查询。您可以使用 Composer 安装 Telescope:


composer require laravel/telescope

然后,运行 Telescope 的安装命令并执行迁移:


php artisan telescope:install

php artisan migrate

启用 Telescope 后,您可以在 /telescope 路径下访问它的仪表板来查看 SQL 查询和其他有用的调试信息。

方法四:使用 DB::getQueryLog 方法

您可以在代码中使用 DB::getQueryLog 方法来获取当前请求中执行的所有 SQL 查询。例如:


DB::enableQueryLog();

// 执行一些查询操作

$queries = DB::getQueryLog();

这将返回一个数组,其中包含了执行的所有 SQL 查询。

方法五:使用 toSql() 方法

toSql 方法可以将一个查询构建器实例转换为对应的 SQL 语句,但是它不会执行这条 SQL 语句。这个方法主要用于调试目的。


$query = DB::table('users')->where('votes', '>', 100)->toSql();

这个 $query 变量现在包含了对应的 SQL 语句,但是这个 SQL 语句并没有被执行。

方法六:使用外部工具

如果您不想修改代码,以下两种方法可以帮助您查看 SQL 查询:

1. 启用 MySQL 的查询日志记录功能

只需在 MySQL 的 my.cnf 文件中添加以下代码,即可让 MySQL 记录所有执行的 SQL 查询:


# 记录 SQL

general_log = 1

general_log_file = /var/log/mysql/general_sql.log

Laravel 查看 SQL 的方式_第1张图片

要使用这种方法,您需要具备对 MySQL 服务器的权限并登录到服务器上。如果多人共享一台 MySQL 开发服务器,最好不要启用此功能,因为会引起混乱。此外,由于日志包含大量信息,很难确定哪些查询是您的,因此建议在测试服务器上使用,只在需要解决重要问题时才启用。

2. 使用 PHPStorm 插件

PHPStorm 的插件市场提供了一个名为 MySQL Proxy 的插件,将代码里的数据库配置更改为它代理的端口,就能将所有的 SQL 日志展示出来。这是小编目前使用的唯一顺手的工具,不需要改动代码,不需要 MySQL 数据库服务器权限,并且检索方便。

Laravel 查看 SQL 的方式_第2张图片

以上是一些查看在 Laravel 中执行的 SQL 查询的方法。您可以选择适合您项目和需求的方法来进行调试和监控数据库查询。

希望这篇文章对您有所帮助!如果您有任何问题或建议,请随时留言告诉我们。

你可能感兴趣的:(laravel,sql,oracle)