CakePHP - 获取最后一次查询运行

43 mysql logging cakephp

我想得到CakePHP运行的最后一个查询.我无法在core.php中打开调试,我无法在本地运行代码.我需要一种方法来获取最后的SQL查询并将其记录到错误日志而不影响实时站点.此查询失败但正在运行.

这样的事情会很棒:

$this->log($this->ModelName->lastQuery);
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Mat*_*att 47

对于Cake 2.0,查询日志受到保护,因此这将起作用

function getLastQuery() {
  $dbo = $this->getDatasource();
  $logs = $dbo->getLog();
  $lastLog = end($logs['log']);
  return $lastLog['query'];
}
Run Code Online (Sandbox Code Playgroud)


Hak*_*ren 31

在CakePHP v2.3.2中测试过

$log = $this->Model->getDataSource()->getLog(false, false);
debug($log);
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说非常有用。确保 core.php 中的调试级别设置为高于 1 (2认同)

Dan*_*ght 29

在CakePHP 1.x中,您可以访问所需的数据DataSource::_queriesLog.Cake并没有真正为这个成员提供getter方法,但底层语言是PHP,没有什么能阻止你做以下事情:

app/app_model.php:

function getLastQuery()
{
    $dbo = $this->getDatasource();
    $logs = $dbo->_queriesLog;

    return end($logs);
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*ell 2

快速浏览一下这本书,你可以打开cakephp api getLoglogTransaction。虽然没有使用过,但我不确定它的表现如何。

否则你可以尝试使用FirePHP,这里是它的指南

您可以尝试DebugKit,尽管我认为您仍然需要 debug 2 才能使其正常工作。

希望有什么可以给你带来指引。:)