Add daysOfMonth() method to schedule tasks on specific days #57817
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.
Problem
Currently, Laravel only provides limited options for scheduling tasks on specific days of the month:
monthlyOn()- runs on a single daytwiceMonthly()- runs on exactly two dayslastDayOfMonth()- runs on the last dayThere's no built-in way to schedule tasks on multiple arbitrary days of the month (e.g., 1st, 10th, 15th, 20th).
Current Workaround:
Solution
Add a
daysOfMonth()method that allows scheduling tasks to run on multiple specific days of the month with a clean, intuitive API.New API:
Implementation
Added
daysOfMonth()method to theManagesFrequenciestrait that accepts multiple day values and builds the appropriate cron expression:Cron Expression:
0 0 1,10,20 * *(midnight on days 1, 10, and 20)Use Cases
Payroll Processing (Multiple Payment Dates)
Weekly Reports on Specific Dates
Quarterly Maintenance Tasks
Mid-Month and End-Month Billing