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 相关文章推荐
Oracle Faq(Oracle的版本)
Oct 09 PHP
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Jan 27 PHP
深入PHP与浏览器缓存的分析
Jun 03 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
Mar 18 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
Jul 30 PHP
PHP生成树的方法
Jul 28 PHP
PHP函数func_num_args用法实例分析
Dec 07 PHP
Yii基于数组和对象的Model查询技巧实例详解
Dec 28 PHP
PHP生成及获取JSON文件的方法
Aug 23 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
Oct 13 PHP
php报错502badgateway解决方法
Oct 11 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面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
php多个字符串替换成同一个的解决方法
2013/06/18 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
laravel请求参数校验方法
2019/10/10 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
Javascript 自定义类型方法小结
2010/03/02 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
javascript省市级联功能实现方法实例详解
2015/10/20 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
React.js入门学习第一篇
2016/03/30 Javascript
jquery分页插件jquery.pagination.js使用方法解析
2016/04/01 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
js图片无缝滚动插件使用详解
2020/05/26 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
vue实现登录拦截
2020/06/29 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
python发送邮件实例分享
2017/07/28 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
总裁岗位职责
2013/12/04 职场文书
《假如》教学反思
2014/04/17 职场文书