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 相关文章推荐
MySQL数据源表结构图示
Jun 05 PHP
PHP5中虚函数的实现方法分享
Apr 20 PHP
php empty() 检查一个变量是否为空
Nov 10 PHP
thinkPHP的Html模板标签使用方法
Nov 13 PHP
codeigniter显示所有脚本执行时间的方法
Mar 21 PHP
微信access_token的获取开发示例
Apr 16 PHP
php关键字仅替换一次的实现函数
Oct 29 PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 PHP
php arsort 数组降序排序详细介绍
Nov 17 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
php生成图片缩略图功能示例
Feb 22 PHP
PHP5.5新特性之yield理解与用法实例分析
Jan 11 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/10/02 PHP
php读取javascript设置的cookies的代码
2010/04/12 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
JS解密入门 最终变量劫持
2008/06/25 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
ionic2懒加载配置详解
2017/09/01 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
Python多线程编程(五):死锁的形成
2015/04/05 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
python实现三次样条插值
2018/12/17 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
对Python实现累加函数的方法详解
2019/01/23 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
给老师的检讨书
2014/02/11 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
国庆促销活动总结
2014/08/29 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
小学教师岗位职责
2015/04/02 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
浅谈python数据类型及其操作
2021/05/25 Python
PyTorch device与cuda.device用法
2022/04/03 Python
netty 实现tomcat的示例代码
2022/06/05 Servers