基於某些原因,你不能使用 Laravel DebugBar ,這篇文章可能會幫助你。
針對 Laravel 應用程式的最佳化遠遠不止消除 N 1 問題那麼簡單。合理的使用 Laravel DebugBar 可以對模型記憶體的使用以及 SQL 查詢時效等問題給出合理的解決方案。
可能你不喜歡使用Laravel DebugBar,或是基於某些原因而無法使用(例如基於介面應用的開發),那麼Database Listener 將會是個不錯的方法,他會記錄你的SQL 查詢到紀錄.
這在生產環境與測試環境同樣適用,你可以很簡單的透過 env 或 config 控制它的啟用與否。
如何使用:
將此加入到你的AppServiceProvider 的啟動方法中
if (env("SQL_DEBUG_LOG")) { DB::listen(function ($query) { Log::debug("DB: " . $query->sql . "[". implode(",",$query->bindings). "]"); }); }
如果你在生產環境中使用它的話,我建議你可以把config 中的設定資訊放到env 中,然後你還可以(而且應該)快取這個config 訊息
我發現另一個問題是假如sql 呼叫本身失敗,會拋出一個異常,在成功呼叫前其監聽的DB::listen 並不會進行記錄,且該異常會在返回監聽之前發生。
以上是Laravel 中 SQL Debug 小技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!