Опанування продуктивності 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