Bonjour,

Je sèche un peu sur l'écriture d'une Query Builder incluant des datestime. En gros j'ai une Entité produit qui contient un champ nom et une date d'expiration de promotion. Dans ma requête, je voudrais afficher les produits dont la date d'expiration n'est pas encore atteinte. Mais aussi de proposer uniquement les promos de la semaine. Donc des 7 prochains jours.

Du coup en cherchant, j'ai trouvé ceci qui marche bien. Le hic, c'est que cette query ne semble pas tenir compte de l'heure mais que des jours. En gros si ma date de fin de promo est le 14 aout 2020 à 00h30 et que nous sommes déjà le 14 aout 2020 à 00h46, la promo s'affiche quand même alors qu'elle est sensé être déjà expirée. Hors, je souhaiterais que dès que la date et l heure de fin de promo est dépassée, que le produit disparaisse de ma liste.

J'ai vu sur des exemples avec SUBDATE() mais quand j'essaye de le mettre dans la Query j'ai plein d'erreurs. Si quelqu'un peut m'aider. Par avance merci !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 $date = date('Y-m-d h:i:s', strtotime("+7 days"));
 $now = date('Y-m-d h:i:s');
 
        $query = $this->createQueryBuilder('p')
            ->andWhere('p.fin_promo BETWEEN :today AND :n7days')
            ->setParameter(':today', $now)
            ->setParameter(':n7days', $date)
            ->orderBy('p.fin_promo', 'ASC')
            ->getQuery()