从DB设置所选行的限制

时间:2014-10-14 13:20:54

标签: symfony doctrine entity conditional-statements findall

我想从DB最后五行获得,但我不能这样做。我试图找到解决方案,但我没有得到任何结果。我想写这样的东西:

$this->getDotrine->getRepository('Entity')->findAll(...);

->slice()对我不起作用。

2 个答案:

答案 0 :(得分:3)

您应该限制数据库级别的结果数量,即。在Doctrine的DQL查询中。在Entity存储库中创建自定义方法:

public function findLatest($limit) {
    return $this->createQueryBuilder('e')
        ->setMaxResults($limit)
        ->getQuery()
        ->getResult();
}

答案 1 :(得分:0)

您需要使用

    $qb->setMaxResults();

e.g。

//控制器

   $results = $this->getDoctrine()->getRepository('nameandbundle:entity')->findAllWithLimit(10);

所以在你的实体类中,只需键入;

   function findAllWithLimit($limit) {

       return $this->getEntityManager()
                   ->createQueryBuilder()
                   ->select('e')
                   ->setMaxResults($limit)
                   ->getQuery()
                   ->getResult();
    }

您可以在没有存储库的情况下执行此操作但不建议这样做,因为您应该遵循胖模型瘦控制器。但你会这样做。

    $em = $this->getDoctrine()->getManager();
    $qb = $em->createQueryBuilder();
    $results = $qb->select('e')
                   ->from('youbundle:entity', 'e')
                   ->setMaxResults(10)
                   ->getQuery()
                   ->getResult();