Laravel 有一套特別靈活的資料庫操作方案,這邊介紹一個簡單的方法來獲取到所有的SQL 語句
1. 開啟 QueryLog
我們需要先調用以下方法來告訴框架可以開始記錄SQL 請求了:
1 |
DB::enableQueryLog(); |
我們可以考慮把此段代碼放置於 BeforeMiddleware
中間件裡,使用以下命令生成BeforeMiddleware:
1 |
php artisan make:middleware BeforeMiddleware |
上面命令會生成 app/Http/Middleware/BeforeMiddleware.php
文件,在此文件的handle
方法內:
1 2 3 4 5 |
public function handle($request, Closure $next) { DB::enableQueryLog(); return $next($request); } |
2. 獲取 QueryLog
開啟了QueryLog
以後,我們就可以使用以下方法來獲取到執行過SQL:
1 |
$queries = DB::getQueryLog(); |
如果想要獲取所有的QueryLog
的話,可以將代碼放置於 AfterMiddleware
中。
使用以下命令創建AfterMiddleware:
1 |
php artisan make:middleware AfterMiddleware |
會生成app/Http/Middleware/AfterMiddleware.php
文件,在此文件的handle
方法內:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public function handle($request, Closure $next) { $response = $next($request); //retrieve all executed queries $queries = DB::getQueryLog(); //code to save query logs in a file //return response return $response; } |