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
杏林同学录(九)
Oct 09 PHP
PHP遍历数组的几种方法
Mar 22 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
php根据分类合并数组的方法实例详解
Nov 06 PHP
php统计文章排行示例
Mar 04 PHP
php socket实现的聊天室代码分享
Aug 16 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
Aug 25 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
Nov 23 PHP
php实现用户登陆简单实例
Apr 04 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
Laravel模糊查询区分大小写的实例
Sep 29 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获取远程图片并保存到本地的方法
2015/05/12 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
PHP使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
由document.body和document.documentElement想到的
2009/04/13 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
js实现3D旋转效果
2020/08/18 Javascript
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
分享15个最受欢迎的Python开源框架
2014/07/13 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
Python中的Matplotlib模块入门教程
2015/04/15 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
Python LMDB库的使用示例
2021/02/14 Python
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
JSF如何进行表格处理及取值
2012/08/06 面试题
营销专业应届生求职信
2013/11/26 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers