我想从DB最后五行获得,但我不能这样做。我试图找到解决方案,但我没有得到任何结果。我想写这样的东西:
$this->getDotrine->getRepository('Entity')->findAll(...);
->slice()
对我不起作用。
答案 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();