Laravel getQueryLog 显示行查询被执行

Posted

技术标签:

【中文标题】Laravel getQueryLog 显示行查询被执行【英文标题】:Laravel getQueryLog show line query is executed 【发布时间】:2014-08-13 16:38:57 【问题描述】:

正如标题所说,我想知道是否有办法让getQueryLog 函数显示查询行。

var_dump(DB::getQueryLog())

【问题讨论】:

不,它没有开箱即用。 【参考方案1】:

getQueryLog() 做不到,但是可以监听查询,生成回溯,最后提取行号:

// routes.php
Event::listen('illuminate.query', function($query,$binding,$time,$connections)

  $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);

  foreach ($backtrace as $trace) 
    if(array_key_exists('file',$trace) && array_key_exists('line',$trace))
      if( strpos($trace['file'],base_path().'/app') !== false )
        var_dump(array(
          'query'    => $query
          ,'binding' => $binding
          ,'time'    => $time
          ,'connection' => $connections
          ,'file' => $trace['file']
          ,'line' => $trace['line']
        ));
        break;
      
    
  
);

【讨论】:

以上是关于Laravel getQueryLog 显示行查询被执行的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 获取查询日志

Laravel 5:如何转储 SQL 查询?

laravel 获取某个查询的查询SQL语句

Laravel Lumen - Eloquent 查询日志

Laravel 5.3 - 如何记录页面上的所有查询?

laravel如何输出最后一条执行的SQL