laravel打印输出完整sql,执行时间和explain分析

自己参考了 Laravel 数据库:输出 SQL 语句写了一个方法方便自己分析执行的 sql 语句

function toRawSql($getQueryLog)
{
    $sqlArr = [];
    foreach ($getQueryLog as $k=>$log){
        $sql = $log['query'];
        foreach ($log['bindings'] as $binding){
            $binding = is_numeric($binding) ? $binding : "'".$binding."'";
            //正则匹配替换
            $sql = preg_replace('/\?/',$binding,$sql,1);
        }
        //输出sql语句
        $sqlArr[$k]['sql'] = $sql;
        //执行时间
        $sqlArr[$k]['time'] = $log['time'];
        //使用explain分析sql语句
        $sqlArr[$k]['explain'] = \DB::select('explain '.$log['query'],$log['bindings']);
    }
    return $sqlArr;
}

使用,我这边是把方法注册为全局函数

DB::connection()->enableQueryLog();
//
//执行代码
dd(toRawSql(DB::getQueryLog()));

输出如下,可以比较方便的查看完整 sql 语句和 explain 分析 sql 语句,通过分析 explain 再对 sql 语句进行相应的语句优化,是否新增索引

explain 分析可查看一张图彻底搞定 explain

laravel打印输出完整sql,执行时间和explain分析

如果有问题,请指出

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。