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 相关文章推荐
一个简洁的多级别论坛
Oct 09 PHP
php基础知识:函数基础知识
Dec 13 PHP
php抓取https的内容的代码
Apr 06 PHP
PHP 工厂模式使用方法
May 18 PHP
解析php php_openssl.dll的作用
Jul 01 PHP
跟我学Laravel之视图 & Response
Oct 15 PHP
php中使用websocket详解
Sep 23 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 PHP
微信公众号实现会员卡领取功能
Jun 08 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
PHP函数积累总结
Mar 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常用函数和常见疑难问题解答
2014/03/05 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
laravel请求参数校验方法
2019/10/10 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
vue实现微信分享功能
2018/11/28 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
django从后台返回html代码的实例
2020/03/11 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
用Python在Excel里画出蒙娜丽莎的方法示例
2020/04/28 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
python编程的核心知识点总结
2021/02/08 Python
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
投标邀请书范文
2014/01/31 职场文书
校庆活动方案
2014/03/31 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
党支部特色活动方案
2014/08/20 职场文书
报案材料怎么写
2015/05/25 职场文书
SQL语法CONSTRAINT约束操作详情
2022/01/18 MySQL