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 相关文章推荐
phpMyAdmin 安装及问题总结
May 28 PHP
PHP 开源框架22个简单简介
Aug 24 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
基于php下载文件的详解
Jun 02 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
Aug 07 PHP
php四种基础算法代码实例
Oct 29 PHP
PHP永久登录、记住我功能实现方法和安全做法
Apr 27 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
PHP实现文件上传功能实例代码
May 18 PHP
PHP中的Iterator迭代对象属性详解
Apr 12 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 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
PHP的FTP学习(二)
2006/10/09 PHP
dedecms中常见问题修改方法总结
2007/03/21 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
最常用的8款PHP调试工具
2014/07/06 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
JS backgroundImage控制
2009/05/19 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
JS获取各种浏览器窗口大小的方法
2014/01/14 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
koa源码中promise的解读
2018/11/13 Javascript
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
python使用pymongo与MongoDB基本交互操作示例
2020/04/09 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
python连接mysql数据库并读取数据的实现
2020/09/25 Python
优秀员工表扬信
2014/01/17 职场文书
收银出纳员岗位职责
2014/02/23 职场文书
《阳光》教学反思
2014/02/23 职场文书
市场拓展计划书
2014/05/03 职场文书
漂亮妈妈观后感
2015/06/08 职场文书