Laravel Date Filtering Package for Eloquent
Published on by Paul Redmond
This Laravel Date Filtering package aims to simplify date-based filtering for your Laravel Eloquent models. It provides various methods to filter records based on time and date intervals:
use OmarElnaghy\LaraDateFilters\Enums\DateRange; $startDate = Carbon::parse('2023-9-03'); // Generic method to filter by various unitsPost::filterByDateRange( duration: 2, dateUnit: 'day', date: $startDate, direction: 'before', // or `'after'` range: DateRange::INCLUSIVE,)->get(); // Helpers for each unit type: second, minute, hour, etc.Post::filterByDateMinutesRange( duration: 2, date: $startDate, direction: 'after', range: DateRange::EXCLUSIVE,)->get(); /*Post::filterByDateSecondsRange();Post::filterByDateHoursRange();Post::filterByDateDaysRange();Post::filterByDateWeeksRange();Post::filterByDateMonthsRange();*/
The setup for this package is defining a custom Eloquent builder that extends the built-in builder with this added functionality. It gives you access to the above filter methods as well as dynamic ranges on the fly using the following conventions:
Post::filterByDate5DayRange($startDate, $direction, $range)->get();Post::filterByDate6WeekRange($startDate, $direction, $range)->get();Post::filterByDate7MonthRange($startDate, $direction, $range)->get();
You can learn more about this package, get full installation instructions, and view the source code on GitHub.