查询生成器:检索最近 X 个月的实体

Query Builder : Retrieve entities from the last X Months

我正在尝试为单个用户检索过去 3 个月的所有 Facture,我想出了 SQL 方法,但我很难将此逻辑应用于查询构建器,我是使用 Symfony3-3。

$now = new Date('now');
$qb = $em->createQueryBuilder();
   $qb->select('f')
      ->from('Facture', 'f')
      ->where('f.doDate BETWEEN :old AND :now')
      ->andwhere('f.userId =:id')
      ->setParameter('old', ($now-90))
      ->setParameter('now', $now);
      ->setParameter('id', $user->getId());

这是我要实现的查询:

SELECT * FROM Facture WHERE (f.DO_Date BETWEEN CURDATE() - INTERVAL 90 DAY AND CURDATE()) AND f.clientId ='?someone's id?'

注意:我尝试了 DQL,但我遇到了太多无法处理的错误。

试试这个(我猜你在你的 Facture 存储库中):

$qb = $em->createQueryBuilder('f');
$qb->andWhere(
       $qb->expr()->between('f.doDate', ':startDate', ':endDate')
    )
  ->andwhere('f.userId =:id')
  ->setParameter('startDate', new \DateTime('-90 days'))
  ->setParameter('endDate', new \DateTime());
  ->setParameter('id', $user->getId())
;