如何使 Doctrine_Expression ( Doctrine 1.2 ) 尝试获取最后 7 天

发布于 2024-12-08 08:34:30 字数 206 浏览 4 评论 0原文

我尝试用原则 1.2 进行此查询:

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

但它没有返回任何结果。

有什么想法吗?

谢谢

I try to make this query with doctrine 1.2:

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

but it's not return me any results.

any idea ?

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小糖芽 2024-12-15 08:34:30

它不返回任何内容的原因是因为 Doctrine 转义了表达式 - 生成的 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);

然而,这不是最安全的选项,因为输入不会转义并且是不是好习惯...

The reason why it doesn't return anything is because Doctrine escapes the expression - the generated SQL is

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

rather than

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

You could force it to work like this:

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

This isn't the safest option however, as the input doesn't get escaped and isn't good practice...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文