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+MYSQL的文章管理系统(二)
Oct 09 PHP
无数据库的详细域名查询程序PHP版(1)
Oct 09 PHP
自动分页的不完整解决方案
Jan 12 PHP
php 中文字符串首字母的获取函数分享
Nov 04 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
PHP分页类集锦
Nov 18 PHP
PHP向socket服务器收发数据的方法
Jan 24 PHP
php数组索引与键值操作技巧实例分析
Jun 24 PHP
10款实用的PHP开源工具
Oct 23 PHP
浅谈PHP eval()函数定义和用法
Jun 21 PHP
php获得刚插入数据的id 的几种方法总结
May 31 PHP
PHP实现常用排序算法的方法
Feb 05 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变量作用域的深入解析
2013/06/03 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
2013/07/01 PHP
解析PHP中$_FILES的使用以及注意事项
2013/07/05 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
深入理解JavaScript定时机制
2010/10/29 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
2017/03/25 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
koa+mongoose实现简单增删改查接口的示例代码
2019/05/13 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
python发送伪造的arp请求
2014/01/09 Python
浅谈Python NLP入门教程
2017/12/25 Python
详解Python中的测试工具
2019/06/09 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
制定岗位职责的原则
2013/11/08 职场文书
创先争优一句话承诺
2014/05/29 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS