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中error_reporting()函数的用法(修改PHP屏蔽错误)
Jul 01 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
wamp下修改mysql访问密码的解决方法
May 07 PHP
基于PHP遍历数组的方法汇总分析
Jun 08 PHP
php 批量查询搜狗sogou代码分享
May 17 PHP
typecho插件编写教程(五):核心代码
May 28 PHP
PHP获取当前相对于域名目录的方法
Jun 26 PHP
yii2实现根据时间搜索的方法
May 25 PHP
PHP封装的PDO数据库操作类实例
Jun 21 PHP
php实现解析xml并生成sql语句的方法
Feb 03 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 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
php实现的MySQL通用查询程序
2007/03/11 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
10个基于浏览器的JavaScript调试工具分享
2013/02/07 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
Python创建xml文件示例
2017/03/22 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
Python:slice与indices的用法
2019/11/25 Python
Python实现井字棋小游戏
2020/03/09 Python
pycharm 复制代码出现空格的解决方式
2021/01/15 Python
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
校长岗位职责
2013/11/26 职场文书
学生吸烟检讨书
2014/09/14 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
党员理论学习心得体会
2016/01/21 职场文书
表扬信范文
2019/04/22 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android
MySQL数据库简介与基本操作
2022/05/30 MySQL