Ak chcete filtrovať vlastníkov v SQL — „ambulancie otvorené teraz“ v katalógu —, zapnite materializáciu, naplánujte príkaz na denné spúšťanie a použite scopy:
OPENING_HOURS_MATERIALIZE=true
OPENING_HOURS_MATERIALIZE_DAYS_AHEAD=60
OPENING_HOURS_MATERIALIZE_DAYS_BEHIND=1// routes/console.php
use Illuminate\Support\Facades\Schedule;
Schedule::command('opening-hours:materialize')->daily();
// anywhere
Clinic::query()->whereOpenAt(now())->get();
Clinic::query()->whereOpenThroughout($start, $end, 'pickup')->get();- Tabuľka opening_hours_intervals uchováva zlúčené obdobia otvorenia ako riadky v UTC pre [dnes − days_behind, dnes + days_ahead].
- Každá zmena zaradí unikátny MaterializeIntervalsJob pre daný kalendár na materialize.connection a materialize.queue.
- Okamihy mimo materializovaného horizontu vyhodia OutsideMaterializedHorizonException namiesto tichej odpovede „zatvorené“.
- whereOpenAt($at, ?$calendar) a whereOpenThroughout($start, $end, ?$calendar) pridajú EXISTS naviazaný na vlastníka; zmazané kalendáre nemajú žiadne intervaly.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.