
【Laravel】PHPのソース内で実行されるSQLの内容を、laravel.logで確認する方法
目次
こんにちは、篠原です。
製造時にDBからデータを取ってくる際、SQLをソース内に書く場面は多いかと思います。その時、自分がソース内で作成したSQLが正しいSQL文になっているか確認したいですよね。
今回はPHP内で実行されるSQLの内容をログに出力して確認する方法をご紹介します。Laravelをお使いの方であれば簡単に確認できるので、ぜひ最後までご覧ください。
検証環境
今回検証を行った各バージョンは以下の通りです。
- PHP
- 8.2.4
- Laravel
- 10.12.0
- A5Mk2
- 2.17.4
- VSCode
- 1.90.0
実行されるSQLを取得する方法
ソースの中のSQLの最後に、下記2行を追記し、「->get();」をコメントアウトします。「->get();」が残ったままだと、ログに出力したときにSQL文の全体が出力できないので、忘れずにコメントアウトしましょう。
Log::info($userSample->toSql());
Log::info($userSample->getBindings());
それぞれの役割を紹介します。1行目の「Log::info($userSample->toSql());」では、下記画像の「$userSample」に入った実行されるSQLを出力してくれます。1行目の記述のみだと、条件の値となるパラメータは出力されません。
そして2行目の「Log::info($userSample->getBindings());」では、条件の値となるパラメータを配列で取得し、ログに出力します。以上が挿入した行の役割となります。
ここまで出来たら、実際に動かしてみて、ファイル名「laravel.log」を開きましょう。下記画像のように実行されるSQLとパラメータが出力されます。
取得したSQLをA5Mk2で実行してみる
では、実際に出力されたSQL文をA5mk2で実行してみます。logファイルに表示されているSQL文をコピーし、A5mk2にペーストします。下記画像のように「`」という記号が入っていますが、SQLが正しければ実行できます。
次にパラメータをそれぞれ「?」を書き換える形で順番に入れていきます。すべて入力したら実行し、結果を確認してください。取得したいデータが取れているか確認できたらOKです!
Laravelを使った業務上では、知っておくとものすごく便利なので、ぜひ使ってみてください。今回挿入した行の意味も併せて覚えておくことで、今後応用ができると思います。
まとめ
いかがだったでしょうか。今回は、PHP内で実行されるSQLの内容を確認する方法についてご紹介しました。
処理の中で実行されるSQLを確認できることで、ソースレビュー前の確認や保守性といった観点でも活躍できると思います。ぜひ、製造中のソースで正しいSQLが実行され、正しいデータが取れているか確認したいと思ったときに使ってみてください。
《関連記事》

