CakePHP - получите последний выполненный запрос

Я хочу получить последний запрос, который выполнил CakePHP. Я не могу включить отладку в core.php, и я не могу выполнить код локально. Мне нужен способ получить последний запрос SQL и зарегистрировать его к журналу ошибок, не производя живой сайт. Этот запрос перестал работать, но выполняется.

что-то вроде этого было бы большим:

$this->log($this->ModelName->lastQuery);

Заранее спасибо.

43
задан 26 March 2010 в 04:59
поделиться

3 ответа

Наличие беглый просмотр книги, cakephp api getLog , вы можете включить logTransaction . Хотя я не использовал его, я не уверен, как он будет работать.

В противном случае вы можете поэкспериментировать с FirePHP , и вот руководство по нему ,

Вы можете попробовать DebugKit , хотя и не в верхней части моей head Я думаю, вам все еще нужна отладка 2, чтобы заставить ее работать.

Надеюсь, что-нибудь поможет вам. :)

2
ответ дан 26 November 2019 в 22:32
поделиться

Вы можете использовать это встроенное.

$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;
4
ответ дан 26 November 2019 в 22:32
поделиться

В CakePHP 1.x нужные вам данные доступны в DataSource::_queriesLog. Cake не предоставляет метода getter для этого члена, но поскольку язык, лежащий в основе, - PHP, ничто не мешает вам сделать следующее:

In app/app_model.php:

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

    return end($logs);
}
29
ответ дан 26 November 2019 в 22:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: