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 units Post::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.