Я нашел способ получить ближайшие дни рождения, используя нативный запрос в доктрине.Это быстрый запрос, и в соответствии с http://docs.doctrine -project.org / projects / doctrine-orm / en / latest / reference / native-sql.html Doctrine так же использует ResultSetMapping внутри себя при создании DQLзапросы.
Это находит все дни рождения в следующие 30 дней.
Используйте этот метод с осторожностью, поскольку он повлияет на то, как объект будет загружен позже.Далее в скрипте для этой сущности будут загружены только те поля, которые добавлены в отображение.Я загрузил список с помощью ajax (и добавил его в сессию)
use Doctrine\ORM\Query\ResultSetMapping;
$rsm = new ResultSetMapping;
$rsm->addEntityResult('AppBundle:User', 'u');
$rsm->addFieldResult('u', 'id', 'id');
$rsm->addFieldResult('u', 'firstname', 'firstname');
$rsm->addFieldResult('u', 'lastname', 'lastname');
$rsm->addFieldResult('u', 'birthday', 'birthday');
$rsm->addFieldResult('u', 'image', 'image');
$query = $this->entityManager->createNativeQuery("
SELECT *
FROM user u
WHERE DAYOFYEAR(u.birthday)
BETWEEN DAYOFYEAR(CURDATE()) AND DAYOFYEAR(DATE_ADD(CURDATE(), INTERVAL ? DAY))
ORDER BY DAYOFYEAR(u.birthday) ASC
", $rsm);
$query->setParameter(1, '30');
$birthdays = $query->getResult();