where('id', 1)->toSql(); 取得到的sql語句是:select * from ...."/> where('id', 1)->toSql(); 取得到的sql語句是:select * from ....">
預設情況下,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
如果經常使用可以考慮使用Builder 的macro 方法加進Builder 裡面:
\Illuminate\Database\Query\Builder::macro('sql', function () { $bindings = $this->getBindings(); $sql = str_replace('?', '%s', $this->toSql()); return sprintf($sql, ...$bindings); }); dd(DB::table('user')->where('id', 1)->sql());
更多laravel框架相關技術文章,請造訪laravel教學專欄!
以上是laravel中的toSql如何取得帶參數的sql語句的詳細內容。更多資訊請關注PHP中文網其他相關文章!