如何让 Doctrine_Expression(学说 1.2)尝试获得最后 7 天

Hai*_*vgi 2 php mysql doctrine-1.2

我尝试使用学说 1.2 进行此查询:

 $q->where('date > ?', 
             new Doctrine_Expression('DATE_SUB(CURDATE() , INTERVAL 7 DAY)'));
Run Code Online (Sandbox Code Playgroud)

但它没有给我任何结果。

任何的想法 ?

谢谢

mog*_*man 5

它不返回任何内容的原因是因为 Doctrine 对表达式进行了转义 - 生成的 SQL 是

WHERE (date > 'DATE_SUB(CURDATE(), INTERVAL 7 DAY)')
Run Code Online (Sandbox Code Playgroud)

而不是

WHERE (l.action_time > DATE_SUB(CURDATE(), INTERVAL 7 DAY))
Run Code Online (Sandbox Code Playgroud)

你可以强迫它像这样工作:

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

然而,这不是最安全的选择,因为输入不会被转义并且不是好的做法......