私の愛しいアップルパイへ
私には超人的な能力があります。それは、人がいま抱えている一番の問題を見通せることです。
あなたがいま抱えている一番の問題は、CakePHP3.xで実際に実行されたSQL文をどう確認すればいいか分からないことですね。よろしい、その問題を解決してさしあげましょう。
CakePHP3.xで実行されたSQL文を確認する方法
▼まず、CakePHP 3.xではQueryオブジェクトを使うと実行前のSQL文を表示できます。こんな感じです。
$query = $this->Model->find(); debug($query->sql());
しかし!これですと埋め込まれた変数などが見えないので、実際に実行されたSQL文は見えません。
ということで、実際にDBに実行されたSQL文を確認するには以下の方法を使います。
$connection = \Cake\Datasource\ConnectionManager::get('default'); // DB接続を取得 $connection->logQueries(true); // SQL Queryのログ出力を有効化 $this->Model->find()->all(); // SQL文を確認したいSQLを実行 $connection->logQueries(false); // SQL Queryのログ出力を無効化
簡単に解説します。$connection->logQueries(true)でSQLのデバッグログへの出力が有効にされます。これを有効化した状態でdebug.logを見ると、logQueriesを有効化している間のSQL文をそのまま閲覧できます。
ちなみに、debug.logのデフォルトの出力先は以下です。
[CakePHPインストールフォルダ] /cakephp/logs/debug.log
貴下の従順なる下僕 松崎より