2014-10-17 68 views
3

我試圖從Symfony/Doctrine單元中選擇最後2小時價值的行。在正常的MySQL,這會就像這樣: SELECT * FROM Posts WHERE日期> SUBDATE(CURRENT_TIMESTAMP, INTERVAL 2 HOUR)如何從Doctrine中的最近2小時中選擇行

但原則不支持這些MySQL的關鍵字,例如SUBDATEINTERVAL。在Doctrine文件中,只給出了幾天和幾個月的替代方案。但我需要幾個小時。我該怎麼做呢?

回答

13

使用PHP DateTime對象 - 學說將處理該問題

$date = new \DateTime(); 
$date->modify('-2 hour'); 

$this 
    ->createQueryBuilder('t') 
    ->andWhere('t.date > :date') 
    ->setParameter(':date', $date) 
    ->getQuery() 
    ->execute(); 
+0

你不錯。謝謝。我一直用DQL術語思考,而不是使用查詢構建器! – 2014-10-17 10:15:28

+0

哦,我的查詢使用JOIN語句,這是如何在QueryBuilder中處理的? Full query:'SELECT p,h FROM DuocastSnmpBundle:Trap p JOIN p.host h WHERE h.importance> 0 AND p.traptime> SUBDATE(CURRENT_TIMESTAMP,INTERVAL 2 HOUR)ORDER BY p.traptime DESC' – 2014-10-17 10:17:49

+0

你可以輕鬆地做到這一點加入'方法 - 檢查http://doctrine-orm.readthedocs.org/en/latest/reference/query-builder.html – 2014-10-17 10:32:32