[12.x] Add DatePeriod support and fix recurrence handling in whereBetween #58109
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR improves the
whereBetweenmethod in Laravel's Query Builder so it can work smoothly with PHP'sDatePeriodclass. It also fixes a problem where periods created using a recurrence count (rather than an end date) would previously cause errors.What Changed
whereBetweennow supportsDatePeriodin addition toCarbonPeriod. Periods created with either an end date or a recurrence count will work as expected. All existing uses ofCarbonPeriodremain fully compatible, and tests have been added to ensure this behavior.Why This Matters
Before this change,
whereBetweenhad two main issues:CarbonPeriod, not the baseDatePeriod.DatePeriodobjects were created using a recurrence count instead of an explicit end date.This PR resolves both issues, making period-based queries more flexible and reliable. Support for additional period options like
EXCLUDE_START_DATEcould be added in a future PR.Examples
Before
After