Performance Laravel 8 Laravel 9 Laravel 10 Laravel 11 Laravel 12

N+1 Query Problem in Laravel - How to Fix

The N+1 query problem occurs when your code executes one query to fetch records, then N additional queries to fetch related data.

The Error

Error Message
N+1 Query Detected (performance warning)

Common Causes

  1. 1 Accessing relationships in loops without eager loading
  2. 2 Not using with() for relationships
  3. 3 Lazy loading in large datasets
  4. 4 Blade views accessing relationships

Solutions

1

Use eager loading with with()

PHP
// Instead of (N+1 problem)
$posts = Post::all();
foreach ($posts as $post) {
    echo $post->author->name;
}

// Use eager loading
$posts = Post::with('author')->get();
2

Enable strict mode to catch N+1

PHP
// In AppServiceProvider boot()
use Illuminate\Database\Eloquent\Model;

Model::preventLazyLoading(!app()->isProduction());
3

Eager load multiple relationships

PHP
$posts = Post::with(['author', 'comments', 'tags'])->get();

// Nested eager loading
$posts = Post::with('comments.user')->get();
4

Use load() for already retrieved models

PHP
$posts = Post::all();
$posts->load('author', 'tags');

Need Help With Your Laravel Project?

I specialize in building custom Laravel applications, process automation, and SaaS development. Whether you need to eliminate repetitive tasks or build something from scratch, let's discuss your project.

Currently available for 2-3 new projects

Hafiz Riaz

About Hafiz

Full Stack Developer from Italy. I build web applications with Laravel and Vue.js, and automate business processes. Creator of ReplyGenius, StudyLab, and other SaaS products.

View Portfolio

Related Errors