symfony实体setmaxresult /限制数组集合

Chr*_*yos 8 symfony doctrine-orm

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

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

$person = $em->find($id);
$person->getShoes();
Run Code Online (Sandbox Code Playgroud)

这将从鞋子表中取出所有东西person_id.但是,如果我只想显示最后5个鞋子添加到数据库中呢?

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

$em->createQuery('...')->setMaxResult(5);
Run Code Online (Sandbox Code Playgroud)

M K*_*aid 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);
}
Run Code Online (Sandbox Code Playgroud)