how to make Doctrine_[removed] doctrine 1.2 ) try

2020-04-30 02:30发布

问题:

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

回答1:

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...