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 相关文章推荐
3种平台下安装php4经验点滴
Oct 09 PHP
php新建文件自动编号的思路与实现
Jun 27 PHP
PHP中去掉字符串首尾空格的方法
May 19 PHP
浅析PHP中Collection 类的设计
Jun 21 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
Jun 12 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 PHP
php输出图像的方法实例分析
Feb 16 PHP
如何直接访问php实例对象中的private属性详解
Oct 12 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
PHP生成推广海报的方法分享
Apr 22 PHP
PHP中echo与print区别点整理
Mar 09 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
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
PHP 输出缓存详解
2009/06/20 PHP
10个php函数实用却不常见
2015/10/13 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
javascript删除html标签函数cIsHTML
2017/01/09 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
[03:23]我的刀塔你不可能这么可爱 第一期金萌萌的故事
2014/06/20 DOTA
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
python实现图片插入文字
2019/11/26 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
表扬信格式
2014/01/12 职场文书
卫生系统先进事迹
2014/05/13 职场文书
道路施工安全责任书
2014/07/24 职场文书
见习报告的格式
2014/10/31 职场文书
企业法人任命书
2015/09/21 职场文书
学生会主席任命书
2015/09/21 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
python 批量压缩图片的脚本
2021/06/02 Python