私は次のクエリを持っている:私はモチベーションのオブジェクトを制限したいDoctrine2の関連エンティティ結果をどのように制限できますか?
$query = $this->getEntityManager()->createQuery('
SELECT u, p, m
FROM MyCoreBundle:User u
JOIN u.programmes p
JOIN u.motivation m
');
$result = $query->getResult();
は、私は(動機リポジトリに)他の場所で使用しています。この2番目のクエリの結果であることをユーザーごとに返さ:
$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();
最初のクエリまたはより良いアプローチで動機付けを制限し制限する方法はありますか?
を参照してください、それは次のようになります可能な解決法は 'User:LatestMotivation' OneToOne関連性を作成することです。そして、新しい 'Motivation'エンティティが追加されるたびに(Doctrine' prePersist'イベント経由で)、新しく追加されたもので 'LatestMotivation'が更新されます。この方法で、最新の動機を取得する多くの 'User'レコードを繰り返し処理することができます。 HTH –