как заставить Doctrine_Expression (doctrine 1.2) пытаться получить последние 7 дней - PullRequest
1 голос
/ 06 октября 2011

Я пытаюсь сделать этот запрос с доктриной 1.2:

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

но это не даст мне никаких результатов.

есть идеи?

спасибо

1 Ответ

4 голосов
/ 11 октября 2011

Причина, по которой он ничего не возвращает, состоит в том, что 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);

Это не самый безопасный вариант, так как ввод не экранируется и не является хорошей практикой ...

...