Laravel 中除錯輸出 SQL 語句的簡便方法

扣丁禪師發表於2017-05-24

Elequent ORM ->toSql() 可以輸出sql語句,但如果帶 binding 引數的,輸出的語句會帶?,類似下面這樣:

select * from `rooms` where `rooms`.`project_id` = ?

barryvdh/laravel-debugbar 這個包需要新增程式碼注入配置,僅限瀏覽器輸出,如果是 postman 工具除錯,就無法檢視輸出的SQL了。

簡便方法

可以把下面程式碼放在查詢語句前:

\DB::listen(function($sql, $bindings, $time) {
     foreach ($bindings as $replace){
         $value = is_numeric($replace) ? $replace : "'".$replace."'";
         $sql = preg_replace('/\?/', $value, $sql, 1);
     }
     dd($sql);
 })
本作品採用《CC 協議》,轉載必須註明作者和本文連結
尊道貴德 / 多行佈施

相關文章