limite et décalage de la doctrine querybuilder
je suis un symfony débutant et je veux faire un blog avec le cadre. j'utilise le référentiel de rentrer à la maison avec des articles de cette méthode :
public function getHomeArticles($offset = null, $limit = null)
{
$qb = $this->createQueryBuilder('a')
->leftJoin('a.comments', 'c')
->addSelect('c')
->addOrderBy('a.created', 'DESC');
if (false === is_null($offset))
$qb->setFirstResult($offset);
if (false === is_null($limit))
$qb->setMaxResults($limit);
return $qb->getQuery()
->getResult();
}
donc dans ma base de données j'ai 10 articles. Dans mon BlogController j'utilise :
$blog = $em->getRepository('TestBlogBundle:Article')
->getHomeArticles(3,4);
Avec ce que je veux 4 articles. Mais en retour, j'ai aussi un article.
Quel est le problème?
source d'informationauteur Astram56
Vous devez vous connecter pour publier un commentaire.
C'est un savoir question où
setFirstResult()
etsetMaxResults()
doivent être utiliser avec précaution si votre requête contient un fetch-rejoint la collection.Comme indiqué sur Premier et le Max d'Éléments résultant de la:
Au lieu de cela, vous pouvez:
Lazy load
utilisation le Paginator (comme indiqué par @Marco ici)
Utilisation
Doctrine\Common\Collections\Collection::slice()