说明 laravel 有一套特别灵活的数据库操作方案,此文介绍一个简单的方法来获取到所有的 sql 语句。
1. 开启 querylog 我们需要先调用以下方法来告诉框架可以开始记录 sql 请求了:
db::enablequerylog();
我们可以考虑把此段代码放置于 beforemiddleware中间件里(文档见 这里),使用以下命令生成 beforemiddleware:
php artisan make:middleware beforemiddleware
上面命令会生成 app/http/middleware/beforemiddleware.php文件,在此文件的 handle方法内:
public function handle($request, closure $next){ db::enablequerylog(); return $next($request);}
2. 获取 querylog 开启了 querylog以后,我们就可以使用以下方法来获取到执行过 sql:
$queries = db::getquerylog();
如果想要获取所有的 querylog的话,可以将代码放置于 aftermiddleware中。
使用以下命令创建 aftermiddleware(文档见 这里):
php artisan make:middleware aftermiddleware
会生成 app/http/middleware/aftermiddleware.php文件,在此文件的 handle方法内:
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; }