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 SQL防注入代码集合
Apr 25 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
有关PHP中MVC的开发经验分享
May 17 PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 PHP
php获取当前时间的毫秒数的方法
Jan 26 PHP
PHP中COOKIES使用示例
Jul 26 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
Dec 20 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
Mar 20 PHP
PHP在线打包下载功能示例
Oct 15 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
PHP中散列密码的安全性分析
Jul 26 PHP
php解析非标准json、非规范json的方式实例
May 10 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类声明和php类使用方法示例分享
2014/03/29 PHP
最常用的8款PHP调试工具
2014/07/06 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
JS仿iGoogle自定义首页模块拖拽特效的方法
2015/02/13 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
2017/08/23 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
python开发之for循环操作实例详解
2015/11/12 Python
python 连接sqlite及简单操作
2017/06/30 Python
实例讲解python中的序列化知识点
2018/10/08 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
Flask-WTF表单的使用方法
2019/07/12 Python
Python sublime安装及配置过程详解
2020/06/29 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
html5 postMessage解决跨域、跨窗口消息传递方案
2016/12/20 HTML / CSS
高校毕业生自我鉴定
2013/10/27 职场文书
学生思想表现的评语
2014/01/30 职场文书
统计系教授推荐信
2014/02/28 职场文书
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
行政专员的岗位职责
2014/03/10 职场文书
通信工程专业求职信
2014/06/04 职场文书
办理房产证委托书
2014/09/18 职场文书
公安交警个人对照检查材料思想汇报
2014/10/01 职场文书
授权收款委托书范本
2014/10/10 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL