首頁 > php框架 > Laravel > laravel中的toSql如何取得帶參數的sql語句

laravel中的toSql如何取得帶參數的sql語句

藏色散人
發布: 2020-02-02 19:29:35
轉載
4587 人瀏覽過

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
登入後複製

如果經常使用可以考慮使用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中文網其他相關文章!

相關標籤:
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板