使用“延迟加载”检索一对多关系中的相关对象时,是否可以设置最大结果量?
例:
让我们说一个人有鞋子
OUTER
这将使用$person = $em->find($id);
$person->getShoes();
从鞋子表中获取所有内容。
但是,如果我只想显示最后5个鞋子添加到数据库中呢?
或者唯一的解决方案是使用Paginator并执行:
person_id
答案 0 :(得分:12)
您可以使用doctrine的Criteria
课来过滤/排序/限制您的记录
public function getShoes() {
$criteria = \Doctrine\Common\Collections\Criteria::create()
->orderBy(array('your_property_to_sort_collection'=> \Doctrine\Common\Collections\Criteria::DESC))
->setMaxResults(5);
return $this->shoes->matching($criteria);
}
答案 1 :(得分:0)
如果您已经订购了收藏品,则也可以使用ArrayCollection::slice()
:
$collection = new ArrayCollection([0,1,2,3,4,5,6]);
$firstFive = $collection->slice(0, 5); // will return [0,1,2,3,4]