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 相关文章推荐
在PHP3中实现SESSION的功能(二)
Oct 09 PHP
php操作mysqli(示例代码)
Oct 28 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
CodeIgniter自定义控制器MY_Controller用法分析
Jan 20 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 PHP
PHP中Trait及其应用详解
Feb 14 PHP
laravel学习笔记之模型事件的几种用法示例
Aug 15 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
PHP调用接口用post方法传送json数据的实例
May 31 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
May 29 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扩展函数
2006/10/09 PHP
一个PHP分页类的代码
2011/05/18 PHP
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
2015/11/06 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
微信小程序之蓝牙的链接
2017/09/26 Javascript
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
详解Django 时间与时区设置问题
2019/07/23 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
python实现串口通信的示例代码
2020/02/10 Python
如何使用python切换hosts文件
2020/04/29 Python
什么是python类属性
2020/06/10 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
Html5基于canvas实现电子签名并生成PDF文档
2020/12/07 HTML / CSS
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
感恩节寄语2015
2015/03/24 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript