我想删除数据库中达到结束日期的所有条目
$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();
我收到错误
[Syntax Error] line 0, col 57: Error: Expected end of string, got 'f'
我尝试了很多方法,但遗憾的是没有太大的成功..任何线索?谢谢!
基于NHG答案的解决方案
$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();
答案 0 :(得分:2)
我不知道您对endingDate
字段的定义是什么,但您可以尝试将DateTime
对象转换为字符串:
$date = new \DateTime('now');
// query
$qb->setParameter('now', $date->format('Y-m-d h:i:s'));
修改强>
问题在于f
中的$em->createQueryBuilder('f')
参数。尝试:
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder();
$qb->delete('AcmeMyBundle:Flower', 'f');
// further code
Doc.另外,我使用Flower
代替FlowerEntity
。
答案 1 :(得分:0)
您可以按日期时间进行比较:
$qb->where('f.endingDate <= :minDatetime');
$qb->setParameter('minDatetime', $minDatetime);