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设计模式之命令模式的应用详解
May 21 PHP
smarty模板局部缓存方法使用示例
Jun 17 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
php中文验证码实现方法
Jun 18 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
Aug 27 PHP
laravel学习笔记之模型事件的几种用法示例
Aug 15 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
Nov 08 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
PHP实现动态压缩js与css文件的方法
May 02 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 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
第一个无线电台是由谁发明的
2021/03/01 无线电
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
php工具型代码之印章抠图
2018/07/18 PHP
详解关于php的xdebug配置(编辑器vscode)
2019/01/29 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
Prototype Selector对象学习
2009/07/23 Javascript
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
vue-router 按需加载 component: () => import() 报错的解决
2020/09/22 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
tensorflow更改变量的值实例
2018/07/30 Python
Python mutiprocessing多线程池pool操作示例
2019/01/30 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
九年级政治教学反思
2014/02/06 职场文书
保护环境倡议书范文
2014/05/13 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
Python编写冷笑话生成器
2022/04/20 Python