Filtrer les éléments d'une vue

Voici un petit aide mémoire (niveau avancé) pour la mise en place d'un filtre un peu poussé pour ses vues.

  1. le problème à résoudre

Dans les événements à venir de la vue "calendrier", je ne veux afficher que les événements publiés qui vérifient ces 2 propositions  :

  • ils se dérouleront dans les 7 jours à venir
  • ils ont débuté mais ils ne sont pas déjà terminés

 

  1. une réponse possible

Comme on le devine dans l'image ci-contre, les critères de filtrage sont :

  • A : le contenu est publié ("contenu : publié (oui)) ;
  • B : la date  de début de l'événement est située entre aujourd'hui et aujourd'hui en huit ( now < début < now +7 day)  ;
  • C : la date  de début de l'événement est antérieure à aujourd'hui (l'événement a débuté);
  • D : la date de fin de l'événement est est postérieure à aujourd'hui (l'événement n'est pas fini).

On observera que certains critères sont incompatibles, et que le critère "contenu publié" est utilisé 2 fois. Cela s'explique par l'impossibilité d'imbriquer les  parenthèses. L' écriture A et (B ou (C et D))  n'étant pas possible, nous devons utiliser une écriture de la forme (A et B) ou ( C et D). Malheureusement ces deux formes ne produisent pas le même résultat.

C'est pourquoi j'ai utilisé cette forme (A et B) ou (A et C et D) équivalente à A et (B ou (C et D)) .