Query Scopes en Eloquent
Comprar curso

9. Query Scopes en Eloquent

Los Query Scopes son una característica avanzada de Eloquent que te permite definir un conjunto de restricciones en tus consultas, lo que hace que tu código sea más eficiente y más fácil de leer. En este módulo, aprenderás cómo utilizar los Query Scopes en Eloquent para mejorar tus consultas.


4 comentarios

Inicia sesión para comentar

Comentarios:

  • Victor Arana Flores

    Victor Arana Flores hace 1 año Destacado

    Los Query Scopes son una herramienta avanzada de Eloquent que te permiten definir conjuntos de restricciones que se aplicarán a tus consultas. Esto hace que tus consultas sean más eficientes y fáciles de leer, ya que puedes reutilizar fragmentos de código en diferentes partes de tu aplicación.

    Para utilizar los Query Scopes, debes definir una función en tu modelo que se llame como el scope que deseas utilizar. Por ejemplo, si deseas definir un Query Scope llamado "activo", debes definir una función llamada "scopeActivo". Dentro de esta función, puedes utilizar los métodos de consulta de Eloquent para definir las restricciones que deseas aplicar a tus consultas.

    Una vez que hayas definido tu Query Scope, puedes utilizarlo en tus consultas de la misma manera que utilizas cualquier otro método de consulta de Eloquent. Por ejemplo, si deseas recuperar todos los usuarios activos, puedes utilizar el scope de la siguiente manera:

    $usuariosActivos = Usuario::activo()->get();

    En este ejemplo, "Usuario" es el nombre de tu modelo y "activo" es el nombre del Query Scope que definiste anteriormente. Luego, utilizas el método "get()" para recuperar los resultados de la consulta.

    Los Query Scopes también pueden aceptar argumentos, lo que te permite personalizar aún más tus consultas. Por ejemplo, si deseas definir un Query Scope que te permita recuperar todos los usuarios que se unieron después de una fecha específica, puedes definirlo de la siguiente manera:

    public function scopeDespuesDe($query, $fecha) {
       return $query->where('fecha_registro', '>', $fecha);
    }

    En este ejemplo, el Query Scope se llama "despuesDe" y acepta un argumento de fecha. Luego, utilizas el método "where" de Eloquent para definir la restricción en la consulta.

    Para utilizar este Query Scope, puedes hacer lo siguiente:

    $usuariosDespuesDe = Usuario::despuesDe('2022-01-01')->get();

    En este ejemplo, "Usuario" es el nombre de tu modelo, "despuesDe" es el nombre del Query Scope y "2022-01-01" es la fecha que deseas utilizar como argumento.

    En resumen, los Query Scopes son una característica avanzada de Eloquent que te permite definir conjuntos de restricciones en tus consultas. Esto hace que tu código sea más eficiente y más fácil de leer, ya que puedes reutilizar fragmentos de código en diferentes partes de tu aplicación.

  • Willyberto Martinez

    Willyberto Martinez hace 1 año

    Saludos, muy buenos y pedagógicos tus cursos, te felicito. Tengo una duda, digamos que quisiera realizar esta consulta (SELECT COUNT(GENERO) AS cantidad FROM $tabla ORDER BY cantidad DESC) u otra consulta como esta (SELECT * FROM $tabla WHERE fecha BETWEEN valor1 AND valor2), espero haberme explicado, me gustaría estructurar consultas un poco más complejas. Gracias.

    • Victor Arana Flores hace 1 año

      Hola, te comparto este recurso que te ayudara a pasar de sql a eloquent

      https://jjlabajo.github.io/SQLtoEloquent/ 

    • Willyberto Martinez hace 1 año

      Excelente, muchas gracias.

  • Mkevyn

    Mkevyn hace 1 año

    En laravel10 puedes crear el scope de la siguiente manera con artisan que se crea dentro de App\Models\Scopes :
    php artisan make:scope NotDepartedScope

  • Julian Alzate

    Julian Alzate hace 2 años

    victor  creo que este video va despues del la clase 9 ya que en esta  explican algo que aquí aparece

    • Victor Arana Flores hace 2 años

      Hola Julian, gracias. Ahorita lo corrijo