Я хочу получить последний выполненный запрос в CakePHP 3.2, я использовал следующее в CakePHP 2.x:
function getLastQuery() { Configure::write('debug', 2); $dbo = $this->getDatasource(); $logs = $dbo->getLog(); $lastLog = end($logs['log']); $latQuery = $lastLog['query']; echo "<pre>"; print_r($latQuery); }
Как я могу сделать это в CakePHP 3.x?
В простом английском: все, что вам нужно сделать, это изменить config / app.php
Найдите конфигурацию Datasources
и установите 'log' => true
'Datasources' => [ 'default' => [ 'className' => 'Cake\Database\Connection', 'driver' => 'Cake\Database\Driver\Mysql', 'persistent' => false, 'host' => 'localhost', ... 'log' => true, // Set this ] ]
Если ваше приложение находится в режиме отладки, вы увидите SQL-запрос, когда на вашей странице отображается ошибка SQL. Если у вас нет режима отладки, вы можете зарегистрировать SQL-запросы в файле, добавив также следующее:
конфиг / app.php
Найдите конфигурацию Log
и добавьте новый тип журнала:
'Log' => [ 'debug' => [ 'className' => 'Cake\Log\Engine\FileLog', 'path' => LOGS, 'file' => 'debug', 'levels' => ['notice', 'info', 'debug'], 'url' => env('LOG_DEBUG_URL', null), ], 'error' => [ 'className' => 'Cake\Log\Engine\FileLog', 'path' => LOGS, 'file' => 'error', 'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'], 'url' => env('LOG_ERROR_URL', null), ], // Add the following... 'queries' => [ 'className' => 'File', 'path' => LOGS, 'file' => 'queries.log', 'scopes' => ['queriesLog'] ] ],
Ваши SQL-запросы теперь будут записываться в файл журнала, который вы можете найти в /logs/queries.log
Добавлена база данных \ ConnectionManager :: get (). Он заменяет getDataSource ()
После Cookbook 3.0 вам необходимо включить Query Logging
и выбрать файл или консоль.
use Cake\Log\Log; // Console logging Log::config('queries', [ 'className' => 'Console', 'stream' => 'php://stderr', 'scopes' => ['queriesLog'] ]); // File logging Log::config('queries', [ 'className' => 'File', 'path' => LOGS, 'file' => 'queries.log', 'scopes' => ['queriesLog'] ]);
Cookbook 3.0 – ведение журнала запросов