Schedule Patterns
Daily & Weekly
daily(), weekly(), weekDays() — every day or every week on specific weekdays.
Daily & Weekly
Daily
Schedule runs every day within your date range.
$schedule = Zap::for($doctor)
->named('Office Hours')
->availability();
$schedule->daily()
->from('2025-01-01')
->to('2025-12-31');
Weekly (specific days)
Use weekly() with an array of weekday names. Add addPeriod() for time slots and from()/to() or forYear() for the validity range.
$schedule->weekly(['monday', 'wednesday', 'friday'])->forYear(2025);
weekDays() — weekly + single time period
weekDays() combines weekly recurrence with one time period in a single call. Useful for office hours or regular shifts.
// Using weekDays() - combines weekly() and addPeriod()
Zap::for($doctor)
->named('Office Hours')
->availability()
->weekDays(['monday', 'tuesday', 'wednesday', 'thursday', 'friday'], '09:00', '17:00')
->forYear(2025)
->save();
// Equivalent to:
Zap::for($doctor)
->named('Office Hours')
->availability()
->weekly(['monday', 'tuesday', 'wednesday', 'thursday', 'friday'])
->addPeriod('09:00', '17:00')
->forYear(2025)
->save();
Use
weekDays() when you have a single time period for specific weekdays. For multiple time periods (e.g., split shifts), use weekly() with multiple addPeriod() calls instead.