laravelで以下のようなDBファサードを使ったクエリビルダーが生成する生のSQLクエリ文字列を取得したい場合ってありますよね。
DBファサードに限らずEloquentのときも。
両方ともサンプルコードで紹介します!
DB::table('posts')->get();
この例では、SELECT * FROM posts という生のSQLを取得できれば正解です。
答えはこうです。
DB::table('posts')->toSql();
Builder インスタンスで toSql() メソッドを使えばOKです。
get()やfirst()のメソッドの代わりにtoSql()をしてあげればいいんです。
これでどの時点でも実際にどのようなクエリになるかをチェックすることができます。
ちなみにDBファサードだけじゃなくてEloquentでも使えます。
Posts::where('author_id', 10)->toSql();
より詳しくはlaravelの公式ドキュメントをチェックしてください。
https://laravel.com/api/9.x/Illuminate/Database/Query/Builder.html#method_toSql
Laravelで稼げる中級エンジニアになるための動画教材