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