Working with dates is a common task in applications of all sizes. Here, we love Laravel. It’s a great framework and it has always made database queries a delight, thanks to Eloquent, its powerful ORM. Now, with the latest version, Laravel introduces new and improved where clauses for dates, making date-based queries even more concise and readable when filtering entries by relative dates such as past, future, or today. and even today.
Why Are These New Methods Useful?
If we already have classic where()
or even whereDate()
methods, why do we need these new ones? Because they enhance the developer experience by making code more readable, maintainable, and expressive, while also reducing verbosity.
New Where Clauses for Dates in Laravel
The newly introduced date-based where clauses include:
wherePast()
whereNowOrPast()
whereFuture()
whereNowOrFuture()
whereToday()
whereBeforeToday()
whereTodayOrBefore()
whereAfterToday()
whereTodayOrAfter()
These methods function similarly to whereDate()
, but they only require the column name as a parameter, automatically comparing it against today’s date. Let’s look at some practical examples:
Retrieve orders placed in the past
Order::wherePast('order_date')->get();
Lenguaje del código: PHP (php)
Retrieve orders placed today or earlier
Order::whereNowOrPast('order_date')->get();
Lenguaje del código: PHP (php)
Retrieve upcoming reservations
Reservation::whereFuture('reservation_date')->get();
Lenguaje del código: PHP (php)
Retrieve reservations happening today or later
Reservation::whereNowOrFuture('reservation_date')->get();
Lenguaje del código: PHP (php)
Retrieve users who signed up today
User::whereToday('created_at')->get();
Lenguaje del código: PHP (php)
Retrieve users who signed up before today
User::whereBeforeToday('created_at')->get();
Lenguaje del código: PHP (php)
Retrieve users who signed up today or earlier
User::whereTodayOrBefore('created_at')->get();
Lenguaje del código: PHP (php)
Retrieve invoices that are due after today
Invoice::whereAfterToday('due_date')->get();
Lenguaje del código: PHP (php)
Retrieve invoices that are due today or after
Invoice::whereTodayOrAfter('due_date')->get();
Lenguaje del código: PHP (php)
Conclusion
These new where clauses provide a more intuitive and readable way to query date-based records in Laravel. They simplify complex date filters and improve code maintainability, making it easier to work with time-sensitive data. If your application relies heavily on date filtering, these methods are a welcome addition to your Laravel toolkit.
Suggestions for Using These Where Clauses for Dates in Laravel
- Filtering expired content: Use
wherePast()
to find expired promotions, past events, or outdated listings. - Upcoming schedules: Use
whereFuture()
to get upcoming meetings, launches, or deadlines. - Daily reports: Use
whereToday()
to filter logs, user activity, or orders placed today. - Billing and invoicing: Use
whereBeforeToday()
orwhereTodayOrAfter()
to track overdue and upcoming payments. - User engagement tracking: Use
whereNowOrPast()
to analyze users who have already completed an action compared to those who haven’t.
By integrating these new methods into your Laravel application, you can enhance readability, reduce code clutter, and improve overall efficiency when dealing with date-based queries.