Skip to content

Instantly share code, notes, and snippets.

@Agontuk
Created January 8, 2017 08:22
Show Gist options
  • Save Agontuk/fc1fa310cda76d8b5fe1cef46ed75d0a to your computer and use it in GitHub Desktop.
Save Agontuk/fc1fa310cda76d8b5fe1cef46ed75d0a to your computer and use it in GitHub Desktop.
<?php
namespace App\Http\Middleware;
use Closure;
class QueryMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (!env('APP_DEBUG')) {
return $next($request);
}
$database = app('db');
$database->enableQueryLog();
$result = $next($request);
if ($result->getStatusCode() == 200 || $result->getStatusCode() == 201) {
$data = json_decode($result->getContent(), true);
$queries = $database->getQueryLog();
$querySql = [];
if (count($queries) > 0) {
$querySql = array_map(function ($query) {
$sql = str_replace(['%', '?'], ['%%', '%s'], $query['query']);
$sql = vsprintf($sql, $query['bindings']);
return [
'sql' => $sql,
'time' => $query['time']
];
}, $queries);
}
$data['queryLog']['queries'] = $querySql;
$data['queryLog']['queryCount'] = count($querySql);
$data['queryLog']['queryTime'] = array_sum(array_pluck($querySql, 'time'));
return response()->json($data, $result->getStatusCode());
}
return $result;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment