Покращення запитів Laravel за допомогою багаторазових патернів області дії

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 02 серпня, 2025
Ваша розробка в Laravel може стати ще ефективнішою завдяки можливостям фільтрації запитів за допомогою локальних та глобальних скоупів. Досліджуйте, як ця функціональність може спростити вашу роботу з базою даних, зберігаючи при цьому чистоту коду
Функція запитів у Laravel перетворює повторювану логіку запитів до бази даних в елегантні, повторно використовувані компоненти. Ці потужні абстракції дозволяють розробникам інкапсулювати класичні шаблони фільтрації, зберігаючи зрозумілість коду та сприяючи послідовній поведінці запитів у додатках. Локальні області визначають повторно використовувані умови запиту за допомогою спеціально помічених методів у моделях Eloquent: ```php use Illuminate\Database\Eloquent\Attributes\Scope; use Illuminate\Database\Eloquent\Builder; class Order extends Model { #[Scope] protected function completed(Builder $query): void { $query->where('status', 'completed'); } #[Scope] protected function recent(Builder $query): void { $query->where('created_at', '>=', now()->subDays(30)); } } ``` Динамічні параметри областей дозволяють гнучку фільтрацію на основі значень, що визначаються під час виконання: ```php #[Scope] protected function byPriority(Builder $query, string $level): void { $query->where('priority_level', $level); } $urgentOrders = Order::byPriority('urgent')->get(); ``` Створення комплексної системи управління запасами демонструє можливості композиції і ланцюгових запитів у різних операційних контекстах: ```php class Inventory extends Model { #[Scope] protected function available(Builder $query): void { $query->where('quantity', '>', 0) ->where('is_active', true); } #[Scope] protected function lowStock(Builder $query): void { $query->whereColumn('quantity', '<=', 'minimum_threshold'); } #[Scope] protected function inWarehouse(Builder $query, string $location): void { $query->where('warehouse_location', $location); } } $criticalItems = Inventory::available() ->lowStock() ->inWarehouse('main') ->orderBy('quantity', 'asc') ->get(); ``` Глобальні області автоматично застосовують умови до всіх запитів моделі, забезпечуючи послідовність фільтрації даних без ручного втручання. Анонімні глобальні області пропонують зручні модифікації запитів для простих умов фільтрації, зберігаючи чисті визначення моделей. Архітектура областей спрощує побудову складних запитів через методи з ланцюговим викликом, що дозволяє розробникам створювати складні взаємодії з базою даних, використовуючи зрозумілі та документовані шаблони коду, які сприяють підтримуваності та зменшують повторення запитів у додатках.

Популярні

Logomark Logotype

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

Logomark Logotype

4 поширені помилки Vite у Laravel

Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку

Logomark Logotype

Як задокументувати кілька API в Laravel за допомогою Scramble

Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше