Laravel提供了非常好用的ORM來作為資料庫的操作(Base使用PDO),但有時我們需要知道ORM到底執行了什麼SQL語去,此狀況下Laravel有提供多種方式可供使用:
1、DB::getQueryLog()
這個可以放在執行完ORM後的後方,可以完整的顯示出這一段程式所用的SQL及所需的時間,我個人是滿愛用的,因為知道執行該段SQL所需要時間,對於調整SQL效能上有很大的幫助
2、toSql()
在ORM的最後如上「toSql()」即可得到這段ORM所用的SQL語去,EX:
1 |
DB::table('users')->toSql() |
3、illuminate.query
這個功能類似於1、中提到的方法,只是操作上與獲得的資訊會更多些
1 2 3 4 5 6 |
Event::listen('illuminate.query', function($query, $params, $time, $conn) { dd(array($query, $params, $time, $conn)); }); DB::table('users')->get(); |
其結果如下
1 2 3 4 5 6 7 8 9 10 11 |
array(4) { [0]=> string(21) "select * from "users"" [1]=> array(0) { } [2]=> string(4) "0.94" [3]=> string(6) "sqlite" } |
[…] 不久前寫了一篇LARAVEL 檢視執行的ORM SQL,但每次都要設中斷點然後叫出來看有點麻煩。 […]