Я хочу получить последний запрос, который выполнил CakePHP. Я не могу включить отладку в core.php, и я не могу выполнить код локально. Мне нужен способ получить последний запрос SQL и зарегистрировать его к журналу ошибок, не производя живой сайт. Этот запрос перестал работать, но выполняется.
что-то вроде этого было бы большим:
$this->log($this->ModelName->lastQuery);
Заранее спасибо.
Наличие беглый просмотр книги, cakephp api getLog , вы можете включить logTransaction
. Хотя я не использовал его, я не уверен, как он будет работать.
В противном случае вы можете поэкспериментировать с FirePHP , и вот руководство по нему ,
Вы можете попробовать DebugKit , хотя и не в верхней части моей head Я думаю, вам все еще нужна отладка 2, чтобы заставить ее работать.
Надеюсь, что-нибудь поможет вам. :)
Вы можете использовать это встроенное.
$dbo = $this->Model->getDatasource();
// store old state
$oldStateFullDebug = $dbo->fullDebug;
// turn fullDebug on
$dbo->fullDebug = true;
// Your code here! eg.
$this->Model->find('all');
// write to logfile
// use print_r with second argument to return a dump of the array
Debugger::log(print_r($dbo->_queriesLog, true));
// restore fullDebug
$dbo->fullDebug = $oldStateFullDebug;
В CakePHP 1.x нужные вам данные доступны в DataSource::_queriesLog
. Cake не предоставляет метода getter для этого члена, но поскольку язык, лежащий в основе, - PHP, ничто не мешает вам сделать следующее:
In app/app_model.php
:
function getLastQuery()
{
$dbo = $this->getDatasource();
$logs = $dbo->_queriesLog;
return end($logs);
}