Featured image of post Laravel 中保存 SQL 執行的操作

Laravel 中保存 SQL 執行的操作

img

Photo by Luca Bravo on Unsplash

想要查看弱點檢測程式都執行哪些的測試,所以把執行的操作都紀錄起來。

在 AppServiceProvider 的 boot 中加入下面程式

\DB::listen(function ($query) {
	$tmp = str_replace('?', '"'.'%s'.'"', $query->sql);
	$qBindings = [];
	foreach ($query->bindings as $key => $value) {
		if (is_numeric($key)) {
			$qBindings[] = $value;
		} else {
			$tmp = str_replace(':'.$key, '"'.$value.'"', $tmp);
		}
	}
	$tmp = vsprintf($tmp, $qBindings);
	$tmp = str_replace("\\", "", $tmp);
	\Log::info(' execution time: '.$query->time.'ms; '.$tmp."\n\t");
});

Source: Laravel 中输出 SQL 语句的到 log 日志