User::whereHas('availabilities', function ($q) use ($dt) {
$q->where('unavailable_start_date', '<=', $dt)
->where('unavailable_end_date', '>', $dt);
}, '=', 0)->get();
Więc w pewien sposób to odwracamy. Ustawiamy zapytanie wewnątrz, gdzie musi znaleźć dostępności, niedostępności, które znajdują się w tym zakresie. Więc pytamy o wszystkie niedostępne rekordy (w pewnym sensie). Następnie chwytamy tylko użytkowników, którzy nie mają relacji spełniających te kryteria, używając innych argumentów do whereHas ( '=', 0
).
Tak więc użytkownicy, którzy mają tę relację i mieszczą się w tym przedziale czasowym, nie są zwracani, bez względu na to, ile rekordów dostępności mają. Jeśli którykolwiek z nich się zakwalifikuje, nie przejdzie przez filtr.