laravel中的toSql如何獲取帶參數(shù)的sql語句

laravel中的toSql如何獲取帶參數(shù)的sql語句

默認情況下,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());

更多laravel框架相關技術文章,請訪問laravel教程欄目!

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享