web-dev-qa-db-fra.com

Expression mysql NOW () dans Doctrine QueryBuilder

Comment utiliser l'expression mysql NOW () dans doctrine querybuilder?

28
user1906245

Dans Doctrine2, vous devez utiliser l'une des options suivantes au lieu de NOW().
Ce:

CURRENT_TIMESTAMP()

Ou:

...
createQuery(...'WHERE x.date = :now')
->setParameter('now', new \DateTime('now'))
...

Si vous ne voulez que l'heure ou la date, utilisez l'une de ces options: CURRENT_TIME() et CURRENT_DATE()

La documentation peut être trouvée ici .

44
Mats Rietdijk

En utilisant le générateur de requêtes, cela ressemblerait à ceci:

$qb
    ->select('B')
    ->from('RandomBundle:Banana', 'B')
    ->where(
        $qb->expr()->gt('B.expiresAt', ':now')
    )
    ->setParameter('now', '\'CURRENT_TIMESTAMP()\'');

Remarque: des guillemets supplémentaires sur le jeu de paramètres sont requis pour que la fonction CURRENT_TIMESTAMP() fonctionne.

Ou simplement

$qb
    ->select('B')
    ->from('RandomBundle:Banana', 'B')
    ->where(
        $qb->expr()->gt('B.expiresAt', 'CURRENT_TIMESTAMP()')
    );
8
Aistis