Důvod, proč nic nevrací, je ten, že Doctrine uniká výrazu – vygenerované SQL je
WHERE (date > 'DATE_SUB(CURDATE(), INTERVAL 7 DAY)')
spíše než
WHERE (l.action_time > DATE_SUB(CURDATE(), INTERVAL 7 DAY))
Můžete jej přinutit, aby fungoval takto:
$date = new Doctrine_Expression('DATE_SUB(CURDATE() , INTERVAL 7 DAY)');
$q->where('date > ' . $date);
Toto však není nejbezpečnější možnost, protože vstup neunikne a není to dobrý postup...