symfony实体setmaxresult /限制数组集合

时间:2015-07-27 17:13:01

标签: symfony doctrine-orm

使用“延迟加载”检索一对多关系中的相关对象时,是否可以设置最大结果量?

例:
让我们说一个人有鞋子

OUTER

这将使用$person = $em->find($id); $person->getShoes(); 从鞋子表中获取所有内容。 但是,如果我只想显示最后5个鞋子添加到数据库中呢?

或者唯一的解决方案是使用Paginator并执行:

person_id

2 个答案:

答案 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]