use Mash\LaravelQueryDebugger\Facades\QueryDebugger;
// Get all logged queries
$queries = QueryDebugger::getQueries();
// Get only slow queries
$slowQueries = QueryDebugger::getSlowQueries(500);
// Get statistics
$stats = QueryDebugger::getStatistics();
// [
// 'total_queries' => 45,
// 'total_time' => 1250.5,
// 'avg_time' => 27.8,
// 'slow_queries' => 3,
// ...
// ]
// Clear logged queries
QueryDebugger::clear();
// ❌ This creates an N+1 problem
public function index()
{
$users = User::all();
foreach ($users as $user) {
echo $user->posts->count(); // Queries posts for each user!
}
}
// ✅ Optimized with eager loading
public function index()
{
$users = User::with('posts')->get();
foreach ($users as $user) {
echo $user->posts->count(); // No additional queries!
}
}
// ❌ Same query runs multiple times
public function dashboard()
{
$user = User::find(1);
// ... later in code ...
$user = User::find(1); // Same query again!
}
// ❌ Fetching all columns when you only need a few
$users = User::all();
'slow_threshold' => 500, // Queries > 500ms flagged as slow
'critical_threshold' => 1000, // Queries > 1000ms flagged as critical
'n1_threshold' => 5, // Pattern repeats 5+ times = N+1