Очень неприятно, что CakePHP не имеет $ this-> Model-> lastQuery () ;.Вот два решения, включая модифицированную версию Handsofaten's:
1.Создайте функцию последнего запроса
Чтобы напечатать последний запуск запроса, в файле /app_model.php добавьте:
function lastQuery(){
$dbo = $this->getDatasource();
$logs = $dbo->_queriesLog;
// return the first element of the last array (i.e. the last query)
return current(end($logs));
}
Затем для вывода на печать вы можете выполнить:
debug($this->lastQuery()); // in model
ИЛИ
debug($this->Model->lastQuery()); // in controller
2.Визуализация представления SQL (не доступно в модели)
Чтобы распечатать все запросы, выполненные в заданном запросе страницы, в вашем контроллере (или компоненте и т. Д.) Выполните:
$this->render('sql');
Это будетскорее всего, выбрасывает пропущенную ошибку просмотра, но это лучше, чем отсутствие доступа к последним запросам!
(Как сказал Handsofaten, файл /elements/sql_dump.ctp есть в cake / libs / view / elements /, носмог сделать вышеупомянутое без создания представления sql.ctp. Кто-нибудь может объяснить это?)