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 相关文章推荐
phpMyAdmin下载、安装和使用入门教程
May 31 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
Jan 27 PHP
从康盛产品(discuz)提取出来的模板类
Jun 28 PHP
让PHP更快的提供文件下载的代码
Jun 13 PHP
关于PHP session 存储方式的详细介绍
Jun 25 PHP
php json与xml序列化/反序列化
Oct 28 PHP
destoon安装出现Internal Server Error的解决方法
Jun 21 PHP
PHP中include/require/include_once/require_once使用心得
Aug 28 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
PHP读取zip文件的方法示例
Nov 17 PHP
thinkphp自定义权限管理之名称判断方法
Apr 01 PHP
Docker搭建自己的PHP开发环境
Feb 24 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
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
jquery 1.3.2 IE8中的一点点的小问题解决方法
2009/07/10 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
python numpy 反转 reverse示例
2019/12/04 Python
python随机模块random使用方法详解
2020/02/14 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
浅析python标准库中的glob
2020/03/13 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
python中doctest库实例用法
2020/12/31 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
2019年分享net面试的经历和题目
2016/08/07 面试题
教师自荐书
2013/10/08 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
八项规定对照检查材料
2014/08/31 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
导游词之山东八大关
2019/12/18 职场文书
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL