Cómo se usan los Query Scopes

Angel Cruz
Angel Cruz

Los query scopes son una alternativa para optimizar nuestro código cuando necesitamos hacer condiciones específicas en nuestras consultas, acá en este post te explico de que tratan.

Una de las características más poderosas de Laravel son los query scopes ya que son fáciles de usar, los query scopes facilita la creación de consultas SQL complejas que en algunos casos se pueden volver a aplicar la misma condición a otros modelos dentro de tu aplicación.

Aquí hay un ejemplo de código de cómo crear un query scope en Laravel:

1<?php
2namespace App\Models;
3 
4use Illuminate\Database\Eloquent\Model;
5 
6class User extends Model
7{
8 /**
9 * Scope a query to only include active users.
10 *
11 * @param \Illuminate\Database\Eloquent\Builder $query
12 * @return void
13 */
14 public function scopeActive($query)
15 {
16 $query->where('active', 1);
17 }
18}

En el ejemplo anterior, creamos un query scope llamado Active en el modelo User, donde basicamente lo que hace agregar una condición WHERE para extraer solo los usuarios que esten activos.

La forma de usarlo sería la siguiente:

1User::active()->get()

Consideraciones para usar los query scopes

Para definir y usar correctamente los query scope, debemos seguir algunas reglas:

  • Todos los scopes deben recibir la variable $query.

  • Todos los nombres de los scopes deben comenzar con la palabra scope seguido del nombre que queremos llamarlo.

En un próximo artículo voy a tratar de explicar una forma de organizar los scopes y hacer que sean "IDE friendly" 😏

Para más información visiten este enlace: https://laravel.com/docs/9.x/eloquent#query-scopes

Te podrá interesar
Cursor anunció un ajuste en sus precios a partir del 15 de septiembre de 2025. Descubre cómo afectará a los usuarios, por qué ocurre este cambio y qué alternativas existen.
GitHub no cierra, pero ya no será lo mismo. Con la salida de Thomas Dohmke como CEO y la decisión de Microsoft de no reemplazarlo, la plataforma dejará de operar como entidad independiente y pasará a formar parte del equipo CoreAI, liderado por Jay Parikh.
Aprende cómo crear reglas personalizadas en Cursor IDE paso a paso. Incluye ejemplos, mejores prácticas y un generador de reglas online para facilitar el proceso.
Logo de Angel Cruz

Made with ♥️ & 🧉 in Montevideo, Uruguay Buenos Aires, Argentina.

[AC].dev is not affiliated with Laravel or Laravel LLC. Laravel is a Trademark of Taylor Otwell.

Code highlighting provided by Torchlight.