DEV Community

dirty_pig
dirty_pig

Posted on

Laravel 查看 SQL 的方式

在多年的 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]);
    });
}
Enter fullscreen mode Exit fullscreen mode

這將把每個執行的 SQL 查詢記錄到日誌檔案中,包括查詢語句、綁定的參數和執行時間。

方法二:使用 Laravel Debugbar 擴充套件

Laravel Debugbar 是一個流行的調試工具,它提供了一個易於使用的介面,用於查看各種調試資訊,包括 SQL 查詢。您可以使用 Composer 安裝 Debugbar:

composer require barryvdh/laravel-debugbar
Enter fullscreen mode Exit fullscreen mode

然後,將 Barryvdh\Debugbar\ServiceProvider 添加到您的 config/app.phpproviders 陣列中。之後,您可以在瀏覽器中查看每個請求的 SQL 查詢以及執行時間。

方法三:使用 Laravel Telescope

Laravel Telescope 是 Laravel 官方提供的一個調試和監控工具,它允許您查看應用程式執行的各種操作,包括 SQL 查詢。您可以使用 Composer 安裝 Telescope:

composer require laravel/telescope
Enter fullscreen mode Exit fullscreen mode

然後,執行 Telescope 的安裝命令並執行遷移:

php artisan telescope:install
php artisan migrate
Enter fullscreen mode Exit fullscreen mode

啟用 Telescope 後,您可以在 /telescope 路徑下訪問它的儀表板來查看 SQL 查詢和其他有用的調試資訊。

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

您可以在程式碼中使用 DB::getQueryLog 方法來獲取當前請求中執行的所有 SQL 查詢。例如:

DB::enableQueryLog();
// 執行一些查詢操作
$queries = DB::getQueryLog();
Enter fullscreen mode Exit fullscreen mode

這將返回一個陣列,其中包含了執行的所有 SQL 查詢。

方法五:使用 toSql() 方法

toSql 方法可以將一個查詢建立器實例轉換為對應的 SQL 語句,但是它不會執行這條 SQL 語句。這個方法主要用於調試目的。

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

這個 $query 變數現在包含了對應的 SQL 語句,但是這個 SQL 語句並沒有被執行。

方法六:使用外部工具

如果您不想修改程式碼,以下兩種方法可以幫助您查看 SQL 查詢:

1. 啟用 MySQL 的查詢日誌記錄功能

只需在 MySQL 的 my.cnf 檔案中添加以下程式碼,即可讓 MySQL 記錄所有執行的 SQL 查詢


# 記錄 SQL
general_log = 1
general_log_file = /var/log/mysql/general_sql.log
Enter fullscreen mode Exit fullscreen mode

啟用 MySQL 的查詢日誌記錄功能

要使用這種方法,您需要具備對 MySQL 伺服器的權限並登錄到伺服器上。如果多人共享一台 MySQL 開發伺服器,最好不要啟用此功能,因為會引起混亂。此外,由於記錄包含大量資訊,很難確定哪些查詢是您的,因此建議在測試伺服器上使用,只在需要解決重要問題時才啟用。

2. 使用 PHPStorm 插件

PHPStorm 的插件市場提供了一個名為 MySQL Proxy 的插件,將程式碼中的資料庫配置更改為它代理的埠口,就能將所有的 SQL 記錄展示出來。這是小編目前使用的唯一方便的工具,不需要改動程式碼,不需要 MySQL 資料庫伺服器權限,並且檢索方便。

使用 PHPStorm 插件

以上是一些查看在 Laravel 中執行的 SQL 查詢的方法。您可以選擇適合您專案和需求的方法來進行調試和監控資料庫查詢。

希望這篇文章對您有所幫助!如果您有任何問題或建議,請隨時留言告訴我們。

Top comments (0)