User::whereHas('availabilities', function ($q) use ($dt) {
$q->where('unavailable_start_date', '<=', $dt)
->where('unavailable_end_date', '>', $dt);
}, '=', 0)->get();
Så vi vänder på det här på ett sätt. Vi ställer in frågan inuti whereHas för att hitta tillgängligheten, otillgängligheten, som finns i det här intervallet. Så vi frågar efter alla otillgängliga poster (på ett sätt). Vi tar då bara tag i användare som inte har relationer som matchar detta kriterium, genom att använda de andra argumenten till whereHas ( '=', 0
).
Så alla användare som har denna relation som faller inom denna tidsram returneras inte, oavsett hur många tillgänglighetsposter de har. Om någon av dem kvalificerar sig kommer de inte att ta sig igenom filtret.