User::whereHas('availabilities', function ($q) use ($dt) {
$q->where('unavailable_start_date', '<=', $dt)
->where('unavailable_end_date', '>', $dt);
}, '=', 0)->get();
Así que estamos revirtiendo esto de alguna manera. Estamos configurando la consulta dentro de whereHas para encontrar las disponibilidades, indisponibilidades, que están en este rango. Entonces estamos consultando todos los registros no disponibles (en cierto modo). Entonces solo estamos capturando usuarios que no tienen relaciones que coincidan con este criterio, usando los otros argumentos para whereHas ( '=', 0
).
Por lo tanto, no se devuelve ningún usuario que tenga esta relación que se encuentre dentro de este marco de tiempo, sin importar cuántos registros de disponibilidad tengan. Si alguno de ellos califica, no pasará el filtro.