Laravel 开发的程序运行较慢,在优化的过程中需要打印慢查询 SQL 语句以便排查,方法如下:

在 appProvidersAppServiceProvider.php 文件的 boot 方法中添加下面的代码,不要忘记引用 DB 类和 Log 类。

DB::listen(function($query){
    $sql = $query->sql;
    $bingings = $query->bindings;         
    $time = $query->time;
    Log::debug(compact('sql','bingings','time'));
});

还可以打印执行时间超过指定值的 SQL 语句:

DB::listen(function($query){
    $sql = $query->sql;
    $bingings = $query->bindings;         
    $time = $query->time;
    if($time > 5){
        Log::debug(compact('sql','bingings','time'));
    }
});

效果: