我有以下查询:
$query = $this->getEntityManager()->createQuery('
SELECT u, p, m
FROM MyCoreBundle:User u
JOIN u.programmes p
JOIN u.motivation m
');
$result = $query->getResult();
我想限制为每个用户返回的动机对象是我在其他地方使用的第二个查询的结果(在动机存储库上):
$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
关于php - 如何限制 Doctrine2 中的关联实体结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7269298/