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 相关文章推荐
Windows下的PHP5.0详解
Nov 18 PHP
ajax php 实现写入数据库
Sep 02 PHP
ThinkPHP模板比较标签用法详解
Jun 30 PHP
在WordPress中使用wp-cron插件来设置定时任务
Dec 10 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
Feb 15 PHP
zend框架实现支持sql server的操作方法
Dec 08 PHP
简单谈谈PHP中的Reload操作
Dec 12 PHP
PHP 7.1新特性的汇总介绍
Dec 16 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
Jan 19 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
PHP实现浏览器格式化显示XML的方法示例
Jan 22 PHP
PHP实现批量修改文件名的方法示例
Sep 18 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
php5.2.0内存管理改进
2007/01/22 PHP
分享一段PHP制作的中文拼音首字母工具类
2014/12/11 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
JS之小练习代码
2008/10/12 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
vue中的provide/inject的学习使用
2018/05/09 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
python dict如何定义
2020/09/02 Python
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
丹麦优惠购物网站:PLUSSHOP
2019/03/24 全球购物
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
放飞蜻蜓反思
2014/02/05 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
安全检查汇报材料
2014/12/26 职场文书
观后感开头
2015/06/19 职场文书
疾病证明书
2015/06/19 职场文书
毕业典礼主持词
2015/06/29 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript