User::whereHas('availabilities', function ($q) use ($dt) {
$q->where('unavailable_start_date', '<=', $dt)
->where('unavailable_end_date', '>', $dt);
}, '=', 0)->get();
Takže to svým způsobem obracíme. Nastavujeme dotaz uvnitř whereMusíme najít dostupnosti, nedostupnosti, které jsou v tomto rozsahu. Dotazujeme se tedy na všechny nedostupné záznamy (svým způsobem). Poté zachytíme pouze uživatele, kteří nemají vztahy odpovídající těmto kritériím, pomocí ostatních argumentů pro whereHas ( '=', 0
).
Takže žádní uživatelé, kteří mají tento vztah a spadají do tohoto časového rámce, nejsou vráceni, bez ohledu na to, kolik záznamů o dostupnosti mají. Pokud se některý z nich kvalifikuje, neprojde filtrem.