Datetime Symfony3条令按月份和/或年份查找ByDate筛选器

Datetime Symfony3条令按月份和/或年份查找ByDate筛选器,datetime,doctrine-orm,symfony,dql,Datetime,Doctrine Orm,Symfony,Dql,我需要按月份和/或年份查询统计数据,但我遇到以下错误: 错误:预期为已知函数,得到“年” 我的代码: public function findByMonthYear($month, $year) { $qb = $this->createQueryBuilder('p') ->where('YEAR(p.date) = :year') ->andWhere('MONTH(p.date) = :month'); $qb->s

我需要按月份和/或年份查询统计数据,但我遇到以下错误:

错误:预期为已知函数,得到“年”

我的代码:

public function findByMonthYear($month, $year)
{
    $qb = $this->createQueryBuilder('p')
        ->where('YEAR(p.date) = :year')
        ->andWhere('MONTH(p.date) = :month');

    $qb->setParameter('year', $year)
        ->setParameter('month', $month);

    return $qb->getQuery()->getOneOrNullResult();
}
通过一些研究,它表明dql没有YEAR()函数,所以它是


最后,我不会坚持解决方案。因此,如果你有一个干净的一个相同的结果,我会把它作为一个答案

一位同事告诉我,以下解决方案可能有效:

where('p.date = :date')
setParameter('date', ''.$year.'-'.$month.'-%') // 2016-07-%
到目前为止没有成功。

公共函数findByMonthYear($month,$year)
public function findByMonthYear($month, $year)
{
    $fromTime = new \DateTime($year . '-' . $month . '-01');
    $toTime = new \DateTime($fromTime->format('Y-m-d') . ' first day of next month');
    $qb = $this->createQueryBuilder('p')
        ->where('p.date >= :fromTime')
        ->andWhere('p.date < :toTime');
        ->setParameter('fromTime', $fromTime)
        ->setParameter('toTime', $toTime);
    return $qb->getQuery()->getOneOrNullResult();
}
{ $fromTime=new\DateTime($year.'-'.$month.'-01'); $toTime=new\DateTime($fromTime->format('Y-m-d').“下个月的第一天”); $qb=$this->createQueryBuilder('p') ->其中('p.date>=:fromTime') ->其中('p.date<:toTime'); ->setParameter('fromTime',$fromTime) ->setParameter('toTime',$toTime); 返回$qb->getQuery()->getOneOrNullResult(); }
我建议使用DoctrineExtensions捆绑包()。它为学说增加了许多有用的功能。