默認情況下,tosql 獲取到的 sql 里面的參數(shù)使用 “?” 代替的,如下:
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
如果經(jīng)常使用可以考慮使用 Builder 的 macro 方法加進 Builder 里面:
IlluminateDatabaseQueryBuilder::macro('sql',?function?()?{ ????$bindings?=?$this->getBindings(); ????$sql?=?str_replace('?',?'%s',?$this->toSql()); ? ????return?sprintf($sql,?...$bindings); }); dd(DB::table('user')->where('id',?1)->sql());
? 版權聲明
文章版權歸作者所有,未經(jīng)允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦