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 print EOF实现方法
May 21 PHP
shopex中集成的站长统计功能的代码简单分析
Aug 11 PHP
PHP新手NOTICE错误常见解决方法
Dec 07 PHP
PHP中数组的三种排序方法分享
May 07 PHP
PHP字符串长度计算 - strlen()函数使用介绍
Oct 15 PHP
Zend Framework教程之Resource Autoloading用法实例
Mar 08 PHP
PHP中Array相关函数简介
Jul 03 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
Mar 09 PHP
PHP 文件锁与进程锁的使用示例
Aug 07 PHP
PHP完全二叉树定义与实现方法示例
Oct 09 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
Jan 04 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
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
php简单防盗链实现方法
2015/07/29 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
jQuery each()小议
2010/03/18 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
2019/04/11 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
销售岗位职责范本
2014/06/12 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
解决Python字典查找报Keyerror的问题
2021/05/26 Python