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 相关文章推荐
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
php 常用类整理
Dec 23 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
php5 apache 2.2 webservice 创建与配置(java)
Jan 27 PHP
PHP独立Session数据库存储操作类分享
Jun 11 PHP
php+ajax实现图片文件上传功能实例
Jun 17 PHP
基于php的CMS中展示文章类实例分析
Jun 18 PHP
PHP执行linux命令常用函数汇总
Feb 02 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
Nov 14 PHP
php实现websocket实时消息推送
Mar 30 PHP
PHP实现正则匹配所有括号中的内容
Jun 22 PHP
PHP中->和=>的含义及使用示例解析
Aug 06 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在服务器执行exec命令失败的解决方法
2012/03/03 PHP
php 深入理解strtotime函数的使用详解
2013/05/23 PHP
浅析php变量修饰符static的使用
2013/06/28 PHP
php的curl封装类用法实例
2014/11/07 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
jQuery 标题的自动翻转实现代码
2009/10/14 Javascript
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
JS实现闪动的title消息提醒效果
2014/06/20 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
p5.js临摹动态图形的方法
2019/10/23 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
大学生的网上创业计划书
2013/12/31 职场文书
计算机专业优秀大学生自我总结
2014/01/21 职场文书
七年级音乐教学反思
2014/01/26 职场文书
2014元旦晚会策划方案
2014/02/19 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书