laravel打印查询sql

方法一(此方法支持 select 语句,insert,delect,update不支持) : 

复制代码
$sql = DB::table('my_table')->select()->tosql();

 

方法二(此方法支持 select 语句,insert,delect,update不支持) :

复制代码
DB::connection()->enableQueryLog();     // 开启查询日志

DB::table('my_table')->insert($data);   // 要查看的sql语句执行

$logs = DB::getQueryLog(); dd($logs);   // 获取查询日志

dd($logs);               // 即可查看执行的sql,传入的参数等等

 

方法三(此方法支持 select,insert, update, delete):   

复制代码
复制代码
// 在需要打印SQL的语句前添加监听事件。
DB::listen(function($query) {
    $bindings = $query->bindings;
    $sql = $query->sql;
    foreach ($bindings as $replace){
        $value = is_numeric($replace) ? $replace : "'".$replace."'";
        $sql = preg_replace('/\?/', $value, $sql, 1);
    }
    dd($sql);
});
// 要打印SQL的语句
$res = DB::table('my_table')->insert($data);
复制代码

 

posted @   牛奔  阅读(11733)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示