Причината, поради която не връща нищо, е, че 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);
Това обаче не е най-безопасният вариант, тъй като въвеждането не се екранира и не е добра практика...