Laravel、Lumen打印sql每次都要在手動加調試代碼挺麻煩的。本文主要介紹另一個調試神器
先講一下效果。可以調試帶頁面的接口,也可以調試單純的json api接口。
圖一:請求的接口列表,可以根據一些條件進行過濾。紅色划線的部分是我自己修改composer保增加上去的選項,后面一起放出composer倉庫鏈接。
圖二、查看異常(就不用到服務器看日志文件了)
圖三、打印sql(所有sql一目了然)
還有其他幾個面板,就不截圖了。
安裝步驟:
1、安裝composer包
# 原版composer包,請求接口列表沒有我圖一划線那幾個篩選項
composer require barryvdh/laravel-debugbar composer require barryvdh/laravel-debugbar --dev //僅開發環境安裝
# 我修改的過的composer包
composer require evan766/laravel-debugbar composer require evan766/laravel-debugbar --dev //僅開發環境安裝
2、注冊服務提供者。該composer包同同時支持laravel和lumen,如果是lumen框架使用,注冊的服務提供者要換成lumen的服務提供者
#bootstrap/app.php
if (env('APP_ENV') != 'production' && env('APP_DEBUG') === true) { $app->register(Barryvdh\Debugbar\LumenServiceProvider::class); }
3、修改配置文件。將包中的debugbar.php配置文件放到Lumen項目的config目錄。
注意些以下幾個配置:
#是否啟用監聽調試,總開關,配置成 true開啟 'enabled' => env('DEBUGBAR_ENABLED', null), # 將調試頁面注入到你項目的運行的一個view頁面,在右下角出來一個調試標 'inject' => true,
4、修改app/Exceptions/Handler.php,所有異常加入到debugbar收集的信息中
public function report(Exception $e) {// 如果開發環境並且打開調試模式,將異常加入到debugbar調試工具中 if (config('app.env') != 'production' && env('APP_DEBUG') === true) { debugbar()->addThrowable($e); } parent::report($e); }
4、特別提示,對於沒有頁面的純api接口的調試。單獨定義一個路由渲染一個給debugbar注入調試信息的view頁面。然后你從任意地方(postman、app、前段項目)請求接口,點開右下角的調試按鈕,通過篩選項過濾出你要查看的api請求就行。
可以添加一個單獨的路由文件
<?php // debugbar 調試工具頁面 $router->get('debugbar', function () { if (env('APP_ENV') != 'production' && env('APP_DEBUG') === true) { return view('debug_tool.debugbar'); } abort(404); });
最后放一下其他人寫的教程供參考
學院君 https://xueyuanjun.com/post/2774.html
如果很懶不想安裝,給一下我之前用過的一個助手函數打印sql
// 可以用這個助手函數打印 function getSql () { app('db')->listen(function ($sql) { $singleSql = $sql->sql; if ($sql->bindings) { foreach ($sql->bindings as $replace) { $value = is_numeric($replace) ? $replace : "'" . $replace . "'"; $singleSql = preg_replace('/\?/', $value, $singleSql, 1); } } dump($singleSql); }); }