【laravel】SQLクエリを生SQLの文字列で出力して確認する|DBファサード、クエリビルダー、Eloquent

Laravel database sql
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