2014-04-01 74 views
2

我有一些使用doctrine和Symfony2存储在数据库中的事件,并且这些事件有两个日期时间参数,事件的开始和结束。我需要知道这些事件是否在某个月有效,但我找不到方法。我试过:doctrine2 php日期时间月

$now = new \Datetime('now'); 
    $qb = $this->createQueryBuilder('e'); 

    $qb->where('e.start <= :now AND e.end >= :now') 
     ->setParameter('now', $now); 

    return $qb->getQuery() 
       ->getArrayResult(); 

但它限制在一天,而不是月份。有没有办法检查它?非常感谢 !

+0

是否合格“现在”为DateTime给你了吗?我一直认为你现在通过传递DateTime什么都没有。 –

+1

@JakeN'public DateTime :: __ construct([string $ time =“now”[,DateTimeZone $ timezone = NULL]])现在默认值为“ – ponciste

回答

4

您可以使用下面的代码

$monthStart = new DateTime(date('Y-m-01') . " 00:00:00"); 
$monthEnd = new DateTime(date('Y-m-t'). " 23:59:59"); 

$qb = $this->createQueryBuilder('e'); 

$qb 
    ->where('e.start <= :end AND e.end >= :start') 
    ->setParameter('start', $monthStart) 
    ->setParameter('end', $monthEnd); 

return $qb->getQuery() 
      ->getArrayResult(); 
+0

+1好的解决方案。 – ponciste