Laravel enhances date-based querying with expressive shorthand methods that simplify common temporal filters in your database queries. These intuitive methods reduce boilerplate while making time-based conditions more readable.
The basic implementation demonstrates the clear, semantic syntax:
// Find records with dates in the past$expiredSubscriptions = Subscription::wherePast('expires_at')->get(); // Find records with dates in the future$upcomingEvents = Event::whereFuture('starts_at')->get(); // Find records with today's date$todaysAppointments = Appointment::whereToday('scheduled_for')->get();
Here's how these methods streamline queries in a booking management system:
class ReservationController extends Controller{ public function dashboard() { return view('reservations.dashboard', [ 'upcoming' => Reservation::whereFuture('check_in') ->where('status', 'confirmed') ->orderBy('check_in') ->get(), 'active' => Reservation::whereToday('check_in') ->orWhere(function($query) { $query->whereToday('check_out') ->whereNotNull('checked_in_at'); }) ->get(), 'past' => Reservation::wherePast('check_out') ->latest('check_out') ->limit(10) ->get(), 'pending_reviews' => Reservation::wherePast('check_out') ->whereNull('reviewed_at') ->where('status', 'completed') ->get() ]); }}
These date shorthand methods create self-documenting queries that clearly express your temporal constraints without the complexity of manual date comparisons.