我尽量让这个查询教义1.2:如何使Doctrine_Expression(教义1.2)试图让过去的7天
$q->where('date > ?',
new Doctrine_Expression('DATE_SUB(CURDATE() , INTERVAL 7 DAY)'));
但它不是我返回任何结果。
有什么想法吗?
感谢
我尽量让这个查询教义1.2:如何使Doctrine_Expression(教义1.2)试图让过去的7天
$q->where('date > ?',
new Doctrine_Expression('DATE_SUB(CURDATE() , INTERVAL 7 DAY)'));
但它不是我返回任何结果。
有什么想法吗?
感谢
为什么它不返回任何东西的原因是逃避主义的表达 - 生成的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);
然而,这并不是最安全的选择,因为输入不会被转义,并且不是很好的做法...
我在Symfony2中使用Doctrine2,我试过了你的上面的建议,但是它没有找到\ Doctrine_Expression'你能告诉我什么以及如何在我的资源库中使用Doctrine_Expression – ScoRpion
这个问题是关于Doctrine 1.2的。 Doctrine 2是一个完全不同的产品。 –
我假设您已经检查了所有这些,但为了完整起见 - 是'date' a DATETIME列?你有符合标准的数据吗? –
是的,我检查了这个,它的工作就像$ q-> where('date>?','2011-10-04') –