我想从过去12小时的数据库记录中获取。
我在控制器中有这个:
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery("SELECT e FROM MainCoreBundle:Event e WHERE e.date >= DATE_SUB(CURRENT_DATE() , 1, 'DAY')");
$statement = $query->getResult();
但我想让它持续12个小时,现在是1天。当我改变它时:
DATE_SUB(CURRENT_DATE() , 12, 'HOUR')")
我收到错误,此方法 DATE_SUB 仅适用于DAYS和MOUNTHS。
如何获得时间?还有其他方法吗?
答案 0 :(得分:4)
您无需注册自定义DQL函数!
这可以通过标准原则来完成,但使用更好的方法。
$em = $this->getDoctrine()->getManager();
$qb = $em->createQueryBuilder();
$results = $qb->select('e')
->from('MainCoreBundle:Event', 'e')
->where('e.date >= :date')
->setParameter('date', new \DateTime('-12 hours'))
->getQuery()
->getOneOrNullResult();
答案 1 :(得分:0)
自Doctrine
版本以来2.5
版本可以使用。请注意它现在在RC2中。
查看Jira和github
您也可以使用您喜欢的任何参数注册自己的sql函数,并将其转换为date_sub
。查看my answer或symfony doc,doctrine doc如何操作