Laravel nos da muchas facilidades de hacer las cosas bien, simples y apunta a que tengamos un código legible (por eso quiero tanto a Laravel ❤). En esta oportunidad vamos a ver como Eloquent nos brinda distintas funciones simples para filtrar registros por fechas, días, mes, años y hasta por horas. Vamos a ver como se hace!
Primero vamos a poner una tabla de usuarios como referencia que nos servirá para los ejemplos que vamos a detallar.
Tabla de Usuarios:
Filtrando usuarios por fecha
Vamos a ver el primer método que nos brinda Eloquent para buscar por fecha. La función es whereDate() y nos permite establecer la condición por una columna especifica y una fecha, como podemos ver en el siguiente ejemplo:
Dándonos como resultado para nuestra tabla de usuarios:
Filtrando usuarios por Mes
Ahora vamos a ver un ejemplo de como obtener registros por un mes especifico y vamos a cambiar el operador de la consulta. Para esto utilizaremos la función whereMonth(). Y, para hacer el ejemplo mas practico, vamos a cambiar el operador de la consulta de «=» (valor por defecto), por «>=».
Y el resultado que nos da es:
Obteniendo datos por Día
Otro método que nos brinda Laravel Eloquent es la posibilidad de obtener datos por un numero de día. La función que nos permite hacerlo es whereDay().
El resultado que obtendremos es:
Aclaración, si existe una fecha con otro mes o año pero con el mismo día (20 para nuestro ejemplo), también se agregara a la colección de resultados. Solo discrimina por días.
Obteniendo datos por año
El siguiente método que veremos es whereYear() y, como se imaginarán, sirve para obtener registros con el mismo año. Vamos al ejemplo:
Y esta consulta nos dará los siguientes resultados:
Obteniendo datos por Hora
Por ultimo, veremos la función que nos permite obtener datos por hora de una forma tan fácil como vimos anteriormente. La función que nos permite hacer esto es whereTime().
Y los resultamos que obtenemos son:
¿Desde que versión están disponibles?
Todos los métodos que hemos visto están disponibles desde la versión 4.2 de Laravel, pero recién fueron agregados a la documentación oficial en la versión 5.3 junto con mejoras. Así que, las vas a poder utilizar hasta en tus proyectos mas viejos 😀
Aclaraciones
Todas las funciones que vimos en este artículo tienen como operador por defecto «=», pero, como vimos en la función whereMonth, se puede cambiar por cualquier operador (‘=’, ‘<‘, ‘>’, ‘<=’, ‘>=’, ‘<>’, ‘!=’, ‘like’).
Estos métodos no solo sirven para utilizarlos con Eloquent, también son validos para utilizarlos con el Query Builder de Laravel.
Conclusión
Hemos visto lo fácil que es trabajar con fechas en Eloquent, además de la potencia que tienen, nos queda un código mucho mas limpio y simple.
Desde LaravelTip.com te animamos a probarlas y combinarlas con otras funcionalidades para sacarle el máximo de su jugo. Hasta la próxima 😉🤙
Gran Articulo
Hola, muy buena informacion, me gustaria preguntar como hacer lo mismo pero que los datos a buscar los entrege el usuario, por ejemplo una fecha.
Saludos.
Muchas gracias amigo. Sería de la misma forma pero deberías poner un formulario y luego utilizar las funciones con los datos del formulario. Saludos.
Disculpa la molestia, tendrás algun ejemplo para ayudarme con ese tema, estoy empezando en laravel.
Genial Matias, te sigo en youtube y me gustan tus videos, espero que puedas hacer más. Yo ahora estoy aprendiendo Laravel y he hecho varios cruds con laravel y con livewire, quería consultarte que me sugerís que sea lo próximo a aprender sobre laravel? Desde ya muchas gracias, saludos desde San Juan
Hola Juan, como estas? Muchas gracias por tu comentario.
Tenes muchas cosas utiles de Laravel para aprender, por ejemplo: Observers, Jobs, Events, etc. Pero lo que más te recomendaría es que estudies como hacer testing. Eso te va a ayudar mucho como desarrollador y más allá de Laravel.
Saludos.
Gracias, tomo tu consejo. Un abrazo!