User::whereHas('availabilities', function ($q) use ($dt) {
$q->where('unavailable_start_date', '<=', $dt)
->where('unavailable_end_date', '>', $dt);
}, '=', 0)->get();
Jadi kami agak membalikkan ini dengan cara. Kami menyiapkan kueri di dalam whereHas untuk menemukan ketersediaan, ketidaktersediaan, yang berada dalam kisaran ini. Jadi kami menanyakan semua catatan yang tidak tersedia (dengan cara tertentu). Kami kemudian hanya mengambil pengguna yang tidak memiliki hubungan yang cocok dengan kriteria ini, dengan menggunakan argumen lain ke whereHas ( '=', 0
).
Jadi setiap pengguna yang memiliki hubungan ini yang termasuk dalam kerangka waktu ini tidak dikembalikan, tidak peduli berapa banyak catatan ketersediaan yang mereka miliki. Jika salah satu dari mereka memenuhi syarat, mereka tidak akan lolos dari filter.