2014-10-03 58 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