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 相关文章推荐
加强版phplib的DB类
Mar 31 PHP
PHP 错误之引号中使用变量
May 04 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
Apr 20 PHP
php中的常用魔术方法总结
Aug 02 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
Laravel 5框架学习之Laravel入门和新建项目
Apr 07 PHP
是 WordPress 让 PHP 更流行了 而不是框架
Feb 03 PHP
php自定义函数转换html标签示例
Sep 29 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 PHP
关于laravel 子查询 & join的使用
Oct 16 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实现批量查询清除一句话后门的代码
2008/01/20 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
HTML5 实现的一个俄罗斯方块实例代码
2016/09/19 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
python生成n个元素的全组合方法
2018/11/13 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
Python实战之制作天气查询软件
2019/05/14 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
最经典的商业地产项目广告词
2014/03/13 职场文书
学生个人评语大全
2015/01/04 职场文书
西柏坡导游词
2015/02/05 职场文书
个人培训总结
2015/03/05 职场文书
违纪开除通知书
2015/04/25 职场文书
高三生物教学反思
2016/02/22 职场文书
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python
python中的random模块和相关函数详解
2022/04/22 Python
Nginx报404错误的详细解决方法
2022/07/23 Servers