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 相关文章推荐
phpadmin如何导入导出大数据文件及php.ini参数修改
Feb 18 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
PHP生成等比缩略图类和自定义函数分享
Jun 25 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
PHP单例模式详细介绍
Jul 01 PHP
PHP使用Mysqli类库实现完美分页效果的方法
Apr 07 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
Oct 20 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
May 23 PHP
php新建文件的方法实例
Sep 26 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
Jul 19 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+MYSQL的文章管理系统(一)
2006/10/09 PHP
mysql 全文搜索 技巧
2007/04/27 PHP
PHP删除HTMl标签的实现代码
2013/06/30 PHP
使用php计算排列组合的方法
2013/11/13 PHP
php目录操作实例代码
2014/02/21 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
python异步任务队列示例
2014/04/01 Python
python两种遍历字典(dict)的方法比较
2014/05/29 Python
浅谈Python单向链表的实现
2015/12/24 Python
python抓取文件夹的所有文件
2018/02/27 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
Python配置文件处理的方法教程
2019/08/29 Python
python根据文本生成词云图代码实例
2019/11/15 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
什么是servlet链?
2014/07/13 面试题
护士自我评价
2014/02/01 职场文书
12月红领巾广播稿
2014/02/13 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书