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之第九天
Oct 09 PHP
php5.2.0内存管理改进
Jan 22 PHP
使用PHP实现密保卡功能实现代码<打包下载直接运行>
Oct 09 PHP
基于initPHP的框架介绍
Apr 18 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
php网站地图生成类示例
Jan 13 PHP
教你在PHPStorm中配置Xdebug
Jul 27 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
php实现多维数组排序的方法示例
Mar 23 PHP
thinkPHP5实现数据库添加内容的方法
Oct 25 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
Oct 15 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 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 显示客户端IP与服务器IP的代码
2010/10/12 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
AngularJS实现表单元素值绑定操作示例
2017/10/11 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
python利用装饰器进行运算的实例分析
2015/08/04 Python
详解python3中tkinter知识点
2018/06/21 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
.net C#面试题
2012/08/28 面试题
学校领导班子群众路线整改措施
2014/09/16 职场文书
党员剖析材料范文
2014/12/18 职场文书
公司内部升职自荐信
2015/03/27 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python