Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir les résultats de la requête si la date sélectionnée est comprise entre deux dates ?

User::whereHas('availabilities', function ($q) use ($dt) {
    $q->where('unavailable_start_date', '<=', $dt)
      ->where('unavailable_end_date', '>', $dt);
}, '=', 0)->get();

Nous sommes donc en quelque sorte en train d'inverser cela d'une certaine manière. Nous mettons en place la requête à l'intérieur de whereHas pour trouver les disponibilités, les indisponibilités, qui sont dans cette plage. Nous interrogeons donc tous les enregistrements indisponibles (d'une certaine manière). Nous ne récupérons alors que les utilisateurs qui n'ont pas de relations correspondant à ce critère, en utilisant les autres arguments de whereHas ( '=', 0 ).

Ainsi, tous les utilisateurs qui ont cette relation et qui tombent dans cette période ne sont pas renvoyés, quel que soit le nombre d'enregistrements de disponibilité dont ils disposent. Si l'un d'entre eux se qualifie, il ne passera pas le filtre.