DB에서 마지막 5 행을 가져오고 싶지만 그렇게 할 수는 없습니다. 나는 해결책을 찾으려고 노력했다. 그러나 나는 어떤 결과도 얻지 않았다. 다음과 같이 쓰고 싶습니다 :DB에서 선택한 행의 제한 설정
$this->getDotrine->getRepository('Entity')->findAll(...);
->slice()
나를 위해 작동하지 않습니다.
DB에서 마지막 5 행을 가져오고 싶지만 그렇게 할 수는 없습니다. 나는 해결책을 찾으려고 노력했다. 그러나 나는 어떤 결과도 얻지 않았다. 다음과 같이 쓰고 싶습니다 :DB에서 선택한 행의 제한 설정
$this->getDotrine->getRepository('Entity')->findAll(...);
->slice()
나를 위해 작동하지 않습니다.
데이터베이스 수준에서 결과 수를 제한해야합니다. Doctrine의 DQL 쿼리. 당신의 Entity
저장소 내에서 사용자 정의 방법을 만들기 :
public function findLatest($limit) {
return $this->createQueryBuilder('e')
->setMaxResults($limit)
->getQuery()
->getResult();
}
당신은
$qb->setMaxResults();
를 사용할 필요가 예를 들어,
// 컨트롤러
$results = $this->getDoctrine()->getRepository('nameandbundle:entity')->findAllWithLimit(10);
그래서 그 실체에 대한 respostiory 클래스는 단순히 입력에;
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();
감사합니다. 저장소가 없으면 감사 할 수 있습니까? – nowiko
필요한 것은'EntityManager'와 그것의 ['createQueryBuilder()'] (http://www.doctrine-project.org/api/orm/2.1/source-class-Doctrine.ORM.EntityManager.html)에 대한 액세스뿐입니다. # 313-321) method (이것은 ['EntityRepository :: createQueryBuilder()'가하는 일입니다.] (https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/EntityRepository.php#L79)). 'EntityManager'는 컨트롤러 내에서'doctrine.orm.entity_manager' 서비스 또는'$ this-> getDoctrine() -> getObjectManager()'로 사용할 수 있습니다. – Crozin