Creación de Query Scopes para mejorar la eficiencia de tus reportes
Comprar curso

10. Creación de Query Scopes para mejorar la eficiencia de tus reportes

En este capítulo aprenderemos cómo agregar filtros a las consultas de nuestra base de datos utilizando Query Scopes en Laravel. Veremos cómo definir Query Scopes en nuestro modelo y cómo utilizarlos en nuestras consultas de Eloquent para filtrar y ordenar los registros según nuestras necesidades.


3 comentarios

Inicia sesión para comentar

Comentarios:

  • Carlos Moreno

    Carlos Moreno hace 7 meses

    Amigo Víctor el filtro con los campos de fecha realmente no funcionan 

    • Carlos Moreno hace 7 meses

      Si estoy usando el created_at, todo igual que en el curso. Ya voy en el ultimo capitulo excelente contenido.

    • Victor Arana Flores hace 7 meses

      Cuando tu creas un campo de tipo fecha, si bien es cierto en la bbdd lo almacena como fecha, eloquent no lo recupera como fecha sino como texto, por lo cual los filtros no te funcionarían.

      Lo que tienes que hacer es hacer un casting de esa propiedad.

      Dirigete al modelo donde se encuentre ese campo de tipo fecha, una vez ahi agrega esta propiedad.

      protected $casts = [

      'fecha' => 'datetime',

      ];

      Con eso logras que siempre que Eloquent recupera el campo fecha, lo trate como fecha y no como texto.

    • Victor Arana Flores hace 7 meses

      El campo created_at no necesitas hacer casting, ya que ya viene con casting por defecto. Esto solo se debe hacer en el caso de que agregues cualquier otro campo de tipo fecha

    • Carlos Moreno hace 7 meses

      Lo solucione de esta forma:

       })->when($filters['fromDate'] ?? null, function($query, $fromDate){

                  $query->where('created_at','>=', $fromDate.' 00:00:00');

      })->when($filters['toDate'] ?? null, function($query, $toDate){

                  $query->where('created_at','<=', $toDate.' 23:59:59');

      Le concatene al fromDate y toDate donde inicia el tiempo y donde termina las 24 horas del día. 

      muchas gracias por responder.

    • Victor Arana Flores hace 7 meses

      Hola Carlos, me alegra que hayas solucionado el problema :D

  • Armando Oliveira

    Armando Oliveira hace 1 año

    Víctor, como puedo hacer el filtro pero cuando existe una relación Ejemplo Tabla uno Facturas, Tabla 2 Clientes. quiero filtrar la relación entre facturas y clientes

  • Jessy García

    Jessy García hace 1 año

    Hola que tal, tengo una duda y es hacer el filtrado, se podra realizar la busqueda en un array?

     

    • Victor Arana Flores hace 1 año

      Hola Jessy, puedes explicarte mejor.