web-dev-qa-db-fra.com

Comment comparer une date avec la date actuelle en utilisant Doctrine 2?

J'ai une base de données où une "date d'expiration" est stockée. Maintenant, je veux comparer la date actuelle avec la date d'expiration stockée. Si la date actuelle est antérieure à la date d'expiration, les données doivent être affichées comme d'habitude, mais si les données ont expiré, je souhaite qu'elles soient exclues.

J'ai essayé:

$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :date')
    ->setParameters('date', 'now()');

L'aide serait cool, ou quelques conseils si quelqu'un comprend mon problème.

16
Adi

Il y a un autre moyen:

$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :today')
    ->setParameter('today', new \DateTime())->
29
fain182

À l'heure actuelle, vous comparez la colonne expDate au text "now ()" et non au résultat de la fonction now().

$em->createQuery('SELECT d FROM test d WHERE d.expDate > CURRENT_DATE()');
14
Crozin

Vous pouvez utiliser la fonction date pour créer une chaîne à comparer:

$query = $em->createQuery('SELECT d FROM test d');
$query->addWhere("d.exp_date > ?",date("Y-m-d", time()));
1
Uzair Bin Nisar

En fait, votre chemin fonctionne mais vous avez une petite erreur dans votre code.

Tu utilises:

$query = $em->createQuery('SELECT d FROM test d WHERE d.expDate > :date')
->setParameters('date', 'now()');

Maintenant, vous pouvez changer de deux manières pour que cela fonctionne: 1. Laissez le "s" dans "setParameters" -> set Parameter  

Ou

  1. Utilisez array en utilisant "paramètre s ", dans votre cas:

    $ query = $ em-> createQuery ('SELECT d FROM test d WHERE d.expDate>: date') 
    -> setParameters (array ('date' => 'now ()');
1
Vojtech Adam