フレームワークのクエリビルダでQueryを作って、データを取り出して実行!としたときに、期待した結果が得られないのは日常茶飯事です。そんなとき原因調査の一つとして、実際に実行されたSQLの確認することがあります。 今回はそんなときに使える「実行したQueryのオブジェクトからSQLを生成」する方法です。 SQLを取り出す(ただしバインド前) cakephpのAPIリファレンスを眺めていると、sql()という、まんまなメソッドが見つかります。 さあこれで一件落着、とはいきません。なぜなら、このメソッドで出力されるのは各種値がバインドされる前のSQLとなります。例えば以下のような感じです。 WHEREなどに指定した値が「:c0」のようなプレースホルダになっていて、実際に実行したSQLそのものではありません。 バインドを取り出す ならば、ということでバインドのデータを取り出します。getValu