---
title: "Cómo se usan los Query Scopes"
excerpt: "Los query scopes son una alternativa para optimizar nuestro código cuando necesitamos hacer condiciones específicas en nuestras consultas, aquí en este post te explico de que tratan."
date: "2023-02-05T22:02:12.000Z"
category: "Laravel"
seo_title: "Laravel Scopes (Query Scopes): Cómo Crear Filtros Reutilizables en Eloquent"
seo_description: "Los query scopes en Laravel Eloquent permiten encapsular condiciones SQL reutilizables en el modelo. Guía con ejemplos prácticos para crear scopes locales correctamente."
author:
  name: "angel cruz"
  picture: "https://angelcruzdevcdn.nyc3.cdn.digitaloceanspaces.com/images/me/angel-cruz.png"
ogImage:
  url: "/images/open-graph/laravel-opengraph-image.png"
---

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:

```php
<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Scope a query to only include active users.
     *
     * @param  \Illuminate\Database\Eloquent\Builder  $query
     * @return void
     */
    public function scopeActive($query)
    {
        $query->where('active', 1);
    }
}
```

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:

```php
User::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

---

## Sitemap

Índice completo del sitio: [/sitemap.md](https://angelcruz.dev/sitemap.md)

Canónico HTML: [https://angelcruz.dev/post/como-se-usan-los-query-scopes](https://angelcruz.dev/post/como-se-usan-los-query-scopes)
