illuminate/database で作成したクエリのSQL文とバインド値を見る

SQL文の出力

illuminate/database を使うと Eloquent というORMやシンプルなSQLクエリビルダなどが利用可能になります。 それらで組んだクエリは、 toSql() というメソッドで実際のSQL文を確認することができます。

$users = new \App\Models\raw\user; // Eloquentオブジェクトをロード
// $users = DB::table('users'); // または直接テーブルをロード
$query = $users
    ->where('status', 1)
    ->whereNull('is_child')
    ->orWhereDate('birthday', '>', '2000-01-01')
    ->orderBy('sort', 'desc');
    ->take(10)
;
echo $query->toSql();
select * from `users` where `status` = ? and `is_child` is null or date(`birthday`) > ? order by `sort` desc limit 10

バインド値の出力

上記で出力したSQL文は、データ部分が ? というプレースホルダになっています。実際に差し込まれる値を確認するには getBindings() メソッドを実行してください。

print_r( $query->getBindings() );
Array ( [0] => 1 [1] => 2000-01-01 )

配列で値のみ返ってきます。
バインド値が組み込まれたSQL文を返すというメソッドは用意されていないようですので、デバッグでSQLを実行したい時などは手動で ? を置き換えて実行するか、SQL実行ツールなどの機能でバインド機能のあるものを利用するといいでしょう。

以上です。