[mysql] CakePHP - запуск последнего запроса



Answers

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

В app/app_model.php :

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

    return end($logs);
}
Question

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

что-то вроде этого было бы здорово:

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

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




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

$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;



Это очень поздний ответ, я знаю, но для тех, кому это нужно в будущем, вы всегда можете ограничить отладку вашего IP-адреса, например:

Configure::write('debug', 0);
if($_SERVER["REMOTE_ADDR"] == '192.168.0.100'){
Configure::write('debug', 2); //Enables debugging only for your IP.
}



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

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

Вы можете попробовать DebugKit , хотя я и не знаю, что вам нужно отлаживать 2, чтобы заставить его работать.

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




Links