Reputation: 634
I want to delete all the entries from my database where the ending date is reached
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder('f');
$qb->delete('AcmeMyBundle:FlowerEntity');
$qb->where($qb->expr()->lte('f.endingDate', ':now'));
$qb->setParameter('now', new \DateTime('now'));
return $qb->getQuery()->getResult();
I get the error
[Syntax Error] line 0, col 57: Error: Expected end of string, got 'f'
I tried many ways but unfortunately without much success.. Any clues ? Thanks !
SOLUTION based on NHG answer
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder();
$qb->delete('AcmeMyBundle:FlowerEntity', 'f');
$qb->where($qb->expr()->lte('f.endingDate', ':now'));
$qb->setParameter('now', new \DateTime('now'));
return $qb->getQuery()->getResult();
Upvotes: 1
Views: 5868
Reputation: 5877
you can compare by Datetime like this:
$qb->where('f.endingDate <= :minDatetime');
$qb->setParameter('minDatetime', $minDatetime);
Upvotes: 0
Reputation: 5877
I dont't know what is your definition of endingDate
field, but you could try to convert a DateTime
object to string:
$date = new \DateTime('now');
// query
$qb->setParameter('now', $date->format('Y-m-d h:i:s'));
EDIT:
So problem is with f
argument in $em->createQueryBuilder('f')
. Try:
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder();
$qb->delete('AcmeMyBundle:Flower', 'f');
// further code
Doc. Additionaly I used Flower
instead of FlowerEntity
.
Upvotes: 4