Tengo la siguiente consulta:¿Cómo puedo limitar el resultado de una entidad asociada en Doctrine2?
$query = $this->getEntityManager()->createQuery('
SELECT u, p, m
FROM MyCoreBundle:User u
JOIN u.programmes p
JOIN u.motivation m
');
$result = $query->getResult();
quiero para restringir la motivación objetos devueltos por cada usuario para que sea el resultado de esta segunda consulta que estoy usando en otro lugar (en el repositorio de motivación):
$query = $this->getEntityManager()->createQuery('
SELECT m FROM MyCoreBundle:Motivation m
WHERE m.user = :user
ORDER BY m.date DESC');
$query->setParameter('user',$user);
$query->setFirstResult(0);
$query->setMaxResults(1);
//@TODO if there is not result recorded for the user, return sth which indicates this
return $query->getResult();
¿Hay alguna forma de limitar y restringir la motivación en la primera consulta o un mejor enfoque?
Teniendo en cuenta lo escrito abajo, y suponiendo que "la última motiviation" es de primordial importancia para usted y será se accede mucho, la posible solución es crear 'Usuario: LatestMotivation' OneToOne relatinship. Y luego cada vez que se agrega una nueva entidad 'Motivación', (a través de los eventos' prePersist' de Doctrine) actualiza 'LatestMotivation' con la recién agregada. De esta forma podrá iterar sobre muchos registros de 'Usuario' obteniendo la última motivación. HTH –