2011-10-06 66 views
1

我儘量讓這個查詢教義1.2:如何使Doctrine_Expression(教義1.2)試圖讓過去的7天

$q->where('date > ?', 
      new Doctrine_Expression('DATE_SUB(CURDATE() , INTERVAL 7 DAY)')); 

但它不是我返回任何結果。

有什麼想法嗎?

感謝

+0

我假設您已經檢查了所有這些,但爲了完整起見 - 是'date' a DATETIME列?你有符合標準的數據嗎? –

+0

是的,我檢查了這個,它的工作就像$ q-> where('date>?','2011-10-04') –

回答

4

爲什麼它不返回任何東西的原因是逃避主義的表達 - 生成的SQL是

WHERE (date > 'DATE_SUB(CURDATE(), INTERVAL 7 DAY)') 

而不是

WHERE (l.action_time > DATE_SUB(CURDATE(), INTERVAL 7 DAY)) 

你可以強制其像這樣工作:

$date = new Doctrine_Expression('DATE_SUB(CURDATE() , INTERVAL 7 DAY)'); 
$q->where('date > ' . $date); 

然而,這並不是最安全的選擇,因爲輸入不會被轉義,並且不是很好的做法...

+0

我在Symfony2中使用Doctrine2,我試過了你的上面的建議,但是它沒有找到\ Doctrine_Expression'你能告訴我什麼以及如何在我的資源庫中使用Doctrine_Expression – ScoRpion

+0

這個問題是關於Doctrine 1.2的。 Doctrine 2是一個完全不同的產品。 –

相關問題