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 中的面向对象编程:通向大型 PHP 工程的办法
Dec 03 PHP
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
Feb 22 PHP
PHP 巧用数组降低程序的时间复杂度
Jan 01 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
PHP优于Node.js的五大理由分享
Sep 15 PHP
destoon实现VIP排名一直在前面排序的方法
Aug 21 PHP
浅谈php冒泡排序
Dec 30 PHP
php实现文本数据导入SQL SERVER
May 17 PHP
PHP中生成UUID自定义函数分享
Jun 10 PHP
学习php设计模式 php实现适配器模式
Dec 07 PHP
PHP实现的微信公众号扫码模拟登录功能示例
May 30 PHP
Yii框架操作cookie与session的方法实例详解
Sep 04 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
农民和部队如何穿矿
2020/03/04 星际争霸
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
Vue EventBus自定义组件事件传递
2018/06/25 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
九年级科学教学反思
2014/01/29 职场文书
党员自我批评与反省材料
2014/02/10 职场文书
珍惜水资源建议书
2014/03/12 职场文书
法人代表委托书
2014/04/04 职场文书
高三励志标语
2014/06/05 职场文书
出国签证在职证明
2014/09/20 职场文书
单位工作证明
2014/10/07 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python