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

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

var_dump(DB::getQueryLog())

【问题讨论】:

  • 不,它没有开箱即用。

标签: laravel


【解决方案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;
      }
    }
  }
});

【讨论】:

    猜你喜欢
    • 2015-03-01
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 2015-10-22
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    相关资源
    最近更新 更多