Причина, по которой он ничего не возвращает, состоит в том, что 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);
Это не самый безопасный вариант, так как ввод не экранируется и не является хорошей практикой ...