No.66
【CakePHP】実行したSQLの確認
CakePHPで実行されたSQLを確認したい
フレームワークで開発を行っていると、どうしても内部処理はブラックボックス化してしまう。逆に言えば、ブラックボックス部分はフレームワークが責任を持って作業してくれると言うことでもあるが。
これは正常に動作しているうちは良いのだが、いざトラブルが起きるとそこを調べるためにはCakePHPのフレームワークを読まなくてはならなくなってしまう。
特に悩ましいのがSQL。モデル、ビヘイビアなどを経由して記載する情報を整えてから処理されるので、実際にどういうSQLが構築されて実行されたのかはわかり辛い。これがWEB画面なら、DebugkitやViewにてSQLを表示する方法が使えるが
<?php echo $this->element('sql_dump'); ?>
Shellなどではその方法も使えない。
結論としては、モデルのDataSourceを利用して実行されたSQLを取得するのが一番速いと思う。
$SQL = $this->モデル->getDataSource()->getLog();
これなら加工次第でログに出したりコンソールに出したり自由自在だし。