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 相关文章推荐
php 删除cookie和浏览器重定向
Mar 16 PHP
php缓存技术详细总结
Aug 07 PHP
php生成图形(Libchart)实例
Nov 06 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
浅谈COOKIE和SESSION区别
Jul 19 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
PHP设计模式之迭代器模式
Jun 17 PHP
利用PHP如何写APP接口详解
Aug 23 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
PHP中文分词的简单实现代码分享
2011/07/17 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
php实现头像上传预览功能
2017/04/27 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
Python实现的选择排序算法示例
2017/11/29 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
Python代码需要缩进吗
2020/07/01 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
参观监狱心得体会
2014/01/02 职场文书
社区工作者先进事迹
2014/01/18 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
创先争优宣传标语
2014/10/08 职场文书
乡镇科协工作总结2015
2015/05/19 职场文书