我想得到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)
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)
快速浏览一下这本书,你可以打开cakephp api getLoglogTransaction。虽然没有使用过,但我不确定它的表现如何。
您可以尝试DebugKit,尽管我认为您仍然需要 debug 2 才能使其正常工作。
希望有什么可以给你带来指引。:)