Ho la seguente query:Come posso limitare un risultato di entità associata in Doctrine2?
$query = $this->getEntityManager()->createQuery('
SELECT u, p, m
FROM MyCoreBundle:User u
JOIN u.programmes p
JOIN u.motivation m
');
$result = $query->getResult();
voglio limitare la motivazione oggetti restituiti per ogni utente di essere il risultato di questa seconda query che sto usando altrove (Sul repository motivazione):
$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();
C'è un modo per limitare e limitare la motivazione nella prima query o un approccio migliore?
Considerando scritto qui sotto, e supponendo che "l'ultima motiviation" è di primaria importanza per voi e sarà accesso molto, la soluzione possibile è creare la relazione "Utente: UltimaMotivazione' OneToOne. E poi ogni volta che viene aggiunta una nuova entità "Motivazione" (tramite eventi Doctrine 'prePersist') aggiorna' LatestMotivation' con quella appena aggiunta. In questo modo sarai in grado di scorrere su molti record di 'User' riprendendo le ultime motivazioni. HTH –