laravel 中的 toSql 获取带参数的 sql 语句

默认情况下,toSql 获取到的 sql 里面的参数使用 "?" 代替的,如下:

DB::table('user')->where('id', 1)->toSql();

 获取到的 sql 语句是:

select * from `tb_user` where `id` = ?

  

有时候我们想要得到具体的语句,可以利用 builder 的 getBindings 方法:$builder = DB::table('user')->where('id', 1);

$bindings = $builder->getBindings();

$sql = str_replace('?', '%s', $builder->toSql());

$sql = sprintf($sql, ...$bindings);

dd($sql);

 获取到的 sql 语句是:

select * from `tb_user` where `id` = 1
posted @ 2022-05-19 14:27  星云惊蛰  阅读(542)  评论(0)    收藏  举报