何も返されない理由は、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);
ただし、これは最も安全なオプションではありません。入力がエスケープされず、適切な方法ではないためです...