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 相关文章推荐
操作Oracle的php类
Oct 09 PHP
php中数组首字符过滤功能代码
Jul 31 PHP
PHP处理JSON字符串key缺少双引号的解决方法
Sep 16 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
Nov 19 PHP
php中Array2xml类实现数组转化成XML实例
Dec 08 PHP
对PHP依赖注入的理解实例分析
Oct 09 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
PHP简单实现解析xml为数组的方法
May 02 PHP
Laravel核心解读之异常处理的实践过程
Feb 24 PHP
php curl发送请求实例方法
Aug 01 PHP
Laravel框架验证码类用法实例分析
Sep 11 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
Apr 23 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 7.0主要新特性
2016/01/07 PHP
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
2006/06/26 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
jQuery的层级查找方式分析
2016/06/16 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
小程序实现分类页
2019/07/12 Javascript
在vue中使用eslint,配合vscode的操作
2020/11/09 Javascript
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
python如何实现一个刷网页小程序
2018/11/27 Python
Opencv实现抠图背景图替换功能
2019/05/21 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
Python动态导入模块和反射机制详解
2020/02/18 Python
python模块如何查看
2020/06/16 Python
python和php学习哪个更有发展
2020/06/17 Python
Python自省及反射原理实例详解
2020/07/06 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
Square Off美国/加拿大:世界上最聪明的国际象棋棋盘
2018/12/06 全球购物
自我鉴定注意事项
2014/01/19 职场文书
面试后的英文感谢信
2014/02/01 职场文书
军训鉴定表自我鉴定
2014/02/13 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
vue2实现provide inject传递响应式
2021/05/21 Vue.js