La fonctionnalité d’étendue de requête de Laravel transforme la logique de requête de base de données répétitive en composants élégants et réutilisables. Ces puissantes abstractions permettent aux développeurs d’encapsuler des modèles de filtrage courants tout en maintenant la clarté du code et en favorisant un comportement de requête cohérent entre les applications.
Les portées locales définissent des contraintes de requête réutilisables par le biais de méthodes spécialement marquées dans les modèles Eloquent :
1use Illuminate\Database\Eloquent\Attributes\Scope;
2use Illuminate\Database\Eloquent\Builder;
3
4class Order extends Model
5{
6 #[Scope]
7 protected function completed(Builder $query): void
8 {
9 $query->where('status', 'completed');
10 }
11
12 #[Scope]
13 protected function recent(Builder $query): void
14 {
15 $query->where('created_at', '>=', now()->subDays(30));
16 }
17}