helper関数を使ってBind部分にパラメータを挿入
※ 参考
【朗報】Laravel の SQL 実行ログが取得しやすくなる
こちらで書かれている通り、Laravel 10.x 系で toRawSql()
が実装されるそうです。
対象の方は、こちら確認してください。
LaravelでQueryBuilderを使用時に、$builder->toSql()
で作成中のSQLは見れるんだけど、バインドした後のデータをPHP側から出力したかったので、Helper関数を使ってBindしてみた。
コード例
// modelには適当なEloquentモデルを指定してください。
$builder = Model::where('id', 1)->where('name', 'name');
$sql = preg_replace_array('/\?/', $builder->getBindings(), $builder->toSql());
dd($builder->toSql(), $builder->getBindings(), $sql);
結果
"select * from `model` where `id` = ? and `name` = ?"
array:2 [▼
0 => 1
1 => "name"
]
"select * from `model` where `id` = 1 and `name` = name"
ヘルパーの、preg_replace_arrayを使い、toSql()の出力結果の?に順番に値をバインドする事が出来ました。
バインドがうまくいかない場合の検証などに良さそうですー