Laravel5.* 打印出执行的sql语句的方法


Posted in PHP onJuly 24, 2017

本文介绍了Laravel5.* 打印出执行的sql语句的方法,分享给大家,具体如下:

打开app\Providers\AppServiceProvider.PHP,在boot方法中添加如下内容

5.2以下版本

// 先引入DB 
use DB;
// 或者直接使用 \DB::
 DB::listen(function($sql, $bindings, $time) {
        dump($sql);
      });

5.2及以上版本

use DB;
// 或者直接使用 \DB::
// 只能接受一个参数

QueryExecuted {#84 ?
 +sql: "select * from `posts` where `slug` = ? limit 1"
 +bindings: array:1 [▶]
 +time: 0.59
 +connection: MySqlConnection {#85 ▶}
 +connectionName: "mysql"
}

 DB::listen(function($sql) {
        dump($sql);
        // echo $sql->sql;
        // dump($sql->bindings);
      });

// 如果要放入日志文件中
DB::listen(
  function ($sql) {
    // $sql is an object with the properties:
    // sql: The query
    // bindings: the sql query variables
    // time: The execution time for the query
    // connectionName: The name of the connection

    // To save the executed queries to file:
    // Process the sql and the bindings:
    foreach ($sql->bindings as $i => $binding) {
      if ($binding instanceof \DateTime) {
        $sql->bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
      } else {
        if (is_string($binding)) {
          $sql->bindings[$i] = "'$binding'";
        }
      }
    }

    // Insert bindings into query
    $query = str_replace(array('%', '?'), array('%%', '%s'), $sql->sql);

    $query = vsprintf($query, $sql->bindings);

    // Save the query to file
    $logFile = fopen(
      storage_path('logs' . DIRECTORY_SEPARATOR . date('Y-m-d') . '_query.log'),
      'a+'
    );
    fwrite($logFile, date('Y-m-d H:i:s') . ': ' . $query . PHP_EOL);
    fclose($logFile);
  }
);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php adodb连接不同数据库
Mar 19 PHP
php中使用DOM类读取XML文件的实现代码
Dec 14 PHP
基于php iconv函数的使用详解
Jun 09 PHP
php分页函数完整实例代码
Sep 22 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 PHP
php bootstrap实现简单登录
Mar 08 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
Mar 21 PHP
PHP序列化操作方法分析
Sep 28 PHP
PHP用户注册邮件激活账户的实现代码
May 31 PHP
基于php中echo用逗号和用点号的区别详解
Jan 23 PHP
详解json在php中的应用
Sep 30 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
Apr 26 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 #PHP
PHP实现的登录页面信息提示功能示例
Jul 24 #PHP
PHP检查网站是否宕机的方法示例
Jul 24 #PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 #PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 #PHP
php实现和c#一致的DES加密解密实例
Jul 24 #PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 #PHP
You might like
Apache服务器无法使用的解决方法
2013/05/08 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
用js来解决ajax读取页面乱码
2010/11/28 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
python实现360的字符显示界面
2014/02/21 Python
python通过yield实现数组全排列的方法
2015/03/18 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
python实现归并排序算法
2018/11/22 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
走进敬老院活动总结
2014/07/10 职场文书
党委班子剖析材料
2014/08/21 职场文书
远程培训的心得体会
2014/09/01 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏
Go标准容器之Ring的使用说明
2021/05/05 Golang
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers