Зміст серії
Оптимізація запитів
- 1 Зупинка проблеми N+1 запитів
- 2 value() vs first() - економія пам'яті
- 3 DB::transaction() - захист даних
- 4 Route Caching - миттєвий приріст швидкості
- 5 select() - припинити завантаження зайвих колонок
- 6 limit() - не завантажувати непотрібне
- 7 whereIn() з великими масивами - пастка пам'яті
- 8 exists() vs count() - розумна перевірка
- 9 cursor() - потокове передавання великих наборів даних
- 10 sole() - суворе отримання одного результату
- 11 insert() vs create() - масові операції правильно
- 12 remember() - кешування результатів запитів
- 13 DB::raw() - коли Eloquent недостатньо
- 14 Dynamic Scopes - побудова складних фільтрів
- 15 toBase() - скидання накладних витрат Eloquent
- 16 Lazy Collections з альтернативою cursor()
- 17 selectRaw() для обчислюваних колонок
- 18 Уникати select(*) в продакшені
- 19 whereHas() vs whereRelation() - швидша фільтрація
- 20 Оптимізація з Database Views
Розширені можливості Eloquent
- 21 Query Scopes - принцип DRY для запитів
- 22 updateOrCreate() - простий спосіб upsert
- 23 Soft Deletes - ніколи не втрачайте дані
- 24 when() - умовні фільтри без if/else
- 25 Accessors & Mutators - автоматична обробка даних
- 26 Eloquent Casts - автоматичне перетворення типів
- 27 Події моделей - хуки в життєвий цикл Eloquent
- 28 whereBelongsTo() - чисті запити по зв'язках
- 29 touch() - автооновлення timestamps у батьків
- 30 whereHas() проти has() - фільтр за зв'язками
- 31 Subquery Selects - уникаємо N+1 без eager loading
- 32 Глобальні скоупи - умови за замовчуванням
- 33 firstOrFail() - чиста обробка 404
- 34 chunkById() - безпечна пакетна обробка
- 35 Колекції Eloquent - це більше, ніж масиви
- 36 Умовне завантаження зв'язків
- 37 existsOr() та doesntExistOr() - чисті перевірки існування
- 38 upsert() - масовий insert/update
- 39 whereBetween() - запити по діапазонах
- 40 withDefault() - ніяких null при зв'язках
Методи та трюки колекцій
- 41 pluck() - витягуй значення професійно
- 42 map() vs transform() - трансформація колекцій
- 43 chunk() - поділ даних на частини
- 44 filter() vs reject() - очищення даних
- 45 groupBy() - організація даних як у таблиці
- 46 partition() - поділ колекції на дві частини
- 47 pipe() - кастомна логіка у ланцюжку
- 48 tap() - дебаг без зміни ланцюжка
- 49 lazy() - колекції без перевантаження пам'яті
- 50 unique() - інтелектуальне видалення дублікатів
- 51 firstWhere() - Пошук елемента за атрибутом
- 52 whenEmpty() та whenNotEmpty() - умовні операції
- 53 sortBy() з кількома колонками