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実行ツールなどの機能でバインド機能のあるものを利用するといいでしょう。
以上です。