User::whereHas('availabilities', function ($q) use ($dt) {
$q->where('unavailable_start_date', '<=', $dt)
->where('unavailable_end_date', '>', $dt);
}, '=', 0)->get();
Quindi in un certo senso stiamo invertendo questo aspetto. Stiamo impostando la query all'interno di whereHas per trovare le disponibilità, le indisponibilità, che sono in questo intervallo. Quindi stiamo interrogando tutti i record non disponibili (in un certo senso). Quindi prendiamo solo gli utenti che non hanno relazioni che corrispondono a questi criteri, utilizzando gli altri argomenti di whereHas ( '=', 0
).
Pertanto, tutti gli utenti con questa relazione che rientrano in questo intervallo di tempo non vengono restituiti, indipendentemente dal numero di record di disponibilità di cui dispongono. Se qualcuno di loro si qualifica, non passerà attraverso il filtro.