我有以下查询:
$query = $this->getEntityManager()->createQuery(' SELECT u,p,m FROM MyCoreBundle:User u JOIN u.programmes p JOIN u.motivation m '); $result = $query->getResult();
我想限制为每个用户返回的动机对象是我在其他地方使用的第二个查询的结果(在Motivation存储库中):
$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();
您不能限制关节行的数量.
如果你有Doctrine 2.1,你可以在集合上使用 – > slice():
$collection = $user->getMotivations(); // returns a LazyCollection,// makes no sql query $motivations = $collection->slice(0,20); // queries the first 20 motivations // for this user (if the association // was not fetch-joint)
见http://www.doctrine-project.org/docs/orm/2.0/en/tutorials/extra-lazy-associations.html