Laravel Zap logo
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.