2014-10-03 59 views
1

我想从我的数据库,在那里达到结束日期日期时间comparaison主义的QueryBuilder

$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(); 

回答

2

我dont't知道什么是你endingDate场的定义,但你可以尝试一个DateTime对象转换为字符串:

$date = new \DateTime('now'); 
// query 
$qb->setParameter('now', $date->format('Y-m-d h:i:s')); 

编辑:

所以问题是在$em->createQueryBuilder('f')f参数。尝试:

$em = $this->getEntityManager(); 
      $qb = $em->createQueryBuilder(); 
      $qb->delete('AcmeMyBundle:Flower', 'f'); 
// further code 

Doc. Additionaly我用Flower代替FlowerEntity

+0

endingDate也是一个dateTime,我怎么能改变这一个字符串?我已经尝试f.endingDate->格式(..)在查询中,但它抛出预期的参数1是对象布尔给定(它看起来很脏我犹豫要试试这个哈哈) – oligan 2014-10-03 14:16:01

+0

@oligan我更新了我的答案。 – NHG 2014-10-03 14:37:51

+0

不错,我也更新了我的答案。 thanksss – oligan 2014-10-03 14:48:47