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数据浏览器
Oct 09 PHP
php 小乘法表实现代码
Jul 16 PHP
PHP定时自动生成静态HTML的实现代码
Jun 20 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
Aug 16 PHP
PHP对文件夹递归执行chmod命令的方法
Jun 19 PHP
php实现SAE上使用storage上传与下载文件的方法
Jun 29 PHP
PHP实现HTML页面静态化的方法
Nov 04 PHP
php实现的操作excel类详解
Jan 15 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
yii2缓存Caching基本用法示例
Jul 18 PHP
php+ajax+json 详解及实例代码
Dec 12 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
Oct 22 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
PHP4与PHP3中一个不兼容问题的解决方法
2006/10/09 PHP
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
广告切换效果(缓动切换)
2009/05/27 Javascript
JavaScript 加号(+)运算符号
2009/12/06 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
js实现表格字段排序
2014/02/19 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
AngularJS中$interval的用法详解
2016/02/02 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
python 公共方法汇总解析
2019/09/16 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
Python实现图片识别加翻译功能
2019/12/26 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
Python新手学习函数默认参数设置
2020/06/03 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
党建示范点实施方案
2014/03/12 职场文书
《荷花》教学反思
2014/04/16 职场文书
新闻发布会活动策划方案
2014/09/15 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书