2011-10-06 64 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是一个完全不同的产品。 –

相关问题