Bonjour à tous,

Je voudrais comparer la date d'aujourd'hui (sans le time) à l'un des champs de ma bdd, pour cela j'ai importé la fonction DATE_FORMAT pour l'utiliser avec le DQL...

Cependant, le résultat me donne un tableau vide alors qu'il y a des dates d'aujourd'hui dans la base ... Merci d'avance pour votre aide précieuse

Voici la fonction du repository :

    public function getListeRdvAjd()
    {
        $ajd = date_format(new \datetime(), "%d-%m-%Y");
        $query = $this->createQueryBuilder('r');
        $query->andWhere("DATE_FORMAT(r.horaire_debut,'%d-%m-%Y') = :ajd")
            ->setParameter('ajd', $ajd);

        return $query->getQuery()->getResult();
    }

2 réponses


Regarde avec la debugbar le requête SQL générée correspondant pour voir si elle représente bien ce que tu demande. Regarde aussi la valeur de $ajd.

Merci Grafikart d'avoir répondu

Après des heures d'arrachage de cheveux et d'expérimentations, il s'avère que le problème venait de l'ordre de formatage qu'il fallait écrire "Y-m-d" et non pas "d-m-Y" pour correspondre à celui de la bdd MySQL, sans doutes ...
Je pensais que cela serait interprété automatiquement mais non ... Aparamment il faut respecter le format du datetime natif et mettre les arguments dans le bon ordre (où bien je me trompe ?), en tous cas ça marche maintenant ... ouf !

Voici donc le code pour ceux qui seraient intéressés :

public function getListeRdvAjd()
    {
        $ajd = new \DateTime('now');   

        $query = $this->createQueryBuilder('r');
        $query->select('r.horaire_debut')

            ->andWhere('date(r.horaire_debut) = :ajd')
            ->setParameter(':ajd', $ajd->format("Y-m-d"));

        return $query->getQuery()->getScalarResult();
    }