Мастерство оптимизации производительности Laravel

Вам нужны быстрые веб-приложения. Медленные приложения раздражают пользователей и вредят вашему бизнесу. Проблема «N+1 запроса» может замедлить ваши приложения на Laravel. Но у Laravel есть решение: жадная загрузка (eager loading).

Эта техника поможет вам освоить метод with(). Вы узнаете, как поддерживать скорость и эффективность ваших приложений.

Давайте рассмотрим пример. У вас есть платформа для блогов. Каждый пост принадлежит автору. Вы хотите вывести список постов, указав автора для каждого из них.

Распространенный подход — сначала получить все посты, а затем по очереди получать автора каждого поста. Это приводит к большому количеству запросов к базе данных.

Если у вас 100 постов, этот код выполнит 101 запрос к базе данных. Это и есть «проблема N+1 запроса». Она создает избыточную нагрузку и замедляет ваше приложение.

Метод with() решает эту проблему. Он загружает все связанные модели за один или два запроса.

Вы можете использовать его следующим образом:

$posts = App\Models\Post::with('author')->get();

Этот код получает все посты и их авторов всего за два запроса.

Вы также можете загружать несколько связей:

$posts = App\Models\Post::with(['author', 'category'])->get();

Или загружать вложенные связи:

$posts = App\Models\Post::with('author.profile')->get();

Жадная загрузка (eager loading) — это ключ к созданию быстрых приложений на Laravel. Она устраняет проблему N+1 запроса и сокращает количество запросов к базе данных.

Используйте метод with(), чтобы повысить производительность вашего приложения.

Источник: https://dev.to/prabashanadev/mastering-laravel-performance-a-deep-dive-into-eager-loading-22l0