Laravel5.* 打印出执行的sql语句的方法

 更新时间:2017年07月24日 15:22:13   作者:野蛮秘籍  
本篇文章主要介绍了Laravel5.* 打印出执行的sql语句的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文介绍了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中最容易忘记的一些知识点总结

    本篇文章总结出了一部分,PHP中最容易忘记的一些知识点。需要的朋友参考下
    2013-04-04
  • 完美解决在ThinkPHP控制器中命名空间的问题

    完美解决在ThinkPHP控制器中命名空间的问题

    下面小编就为大家带来一篇完美解决在ThinkPHP控制器中命名空间的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • PHP实现活动人选抽奖功能

    PHP实现活动人选抽奖功能

    这篇文章主要介绍了PHP实现活动人选抽奖功能,随机抽取指定人数,依次列举被抽中的人名,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Laravel框架实现利用监听器进行sql语句记录功能

    Laravel框架实现利用监听器进行sql语句记录功能

    这篇文章主要介绍了Laravel框架实现利用监听器进行sql语句记录功能,结合实例形式分析了Laravel框架监听器的创建、引入以及使用监听器记录sql语句的相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • ThinkPHP 3.2.2实现事务操作的方法

    ThinkPHP 3.2.2实现事务操作的方法

    这篇文章主要介绍了ThinkPHP 3.2.2实现事务操作的方法,简单分析了thinkPHP中事务的启动、提交、回滚等操作方法并给出了完整的事务提交与回滚操作实例,需要的朋友可以参考下
    2017-05-05
  • Linux系统递归生成目录中文件的md5的方法

    Linux系统递归生成目录中文件的md5的方法

    这篇文章主要介绍了Linux系统递归生成目录中文件的md5的方法,利用PHP脚本实现,需要的朋友可以参考下
    2015-06-06
  • PHP解密Unicode及Escape加密字符串

    PHP解密Unicode及Escape加密字符串

    在json中不支持中文,用它传送中文数据就会出现数据丢失或者乱码,必须在传送前对要发送的字符串进行编码,由于传送过去需要用js进行数据解析,考虑 到js中有unescape函数,故若在php中有个escape函数,对数据进行编码,在客户端用unescape进行 解码,这样就会方便很多。
    2015-05-05
  • PHP调用接口API封装的例子

    PHP调用接口API封装的例子

    今天小编就为大家分享一篇PHP调用接口API封装的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • PHP与SQL语句常用大全

    PHP与SQL语句常用大全

    很多朋友不清楚php中sql查询语句的id=%d的意思,今天小编通过本文给大家详细介绍下PHP中SQL查询语句的id=%d解释,需要的朋友参考下吧
    2016-12-12
  • PHP实现微信提现(企业付款到零钱)

    PHP实现微信提现(企业付款到零钱)

    这篇文章主要为大家详细介绍了PHP实现微信提现,企业付款到零钱,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08

最新评论