public function getArticlesForAuthor($author, \Newscoop\Criteria $criteria) { $em = $this->getEntityManager(); $queryBuilder = $em->getRepository('Newscoop\\Entity\\Article')->createQueryBuilder('a')->select('a')->where('au.id = :author')->andWhere('a.workflowStatus = :status')->join('a.authors', 'au')->setParameter('author', $author)->setParameter('status', 'Y'); if ($criteria->query) { $queryBuilder->andWhere('a.name = :query')->setParameter('query', $criteria->query); } $countQueryBuilder = clone $queryBuilder; $countQueryBuilder->select('COUNT(a)'); $queryBuilder->setMaxResults($criteria->maxResults); $queryBuilder->setFirstResult($criteria->firstResult); foreach ($criteria->orderBy as $key => $order) { $key = 'a.' . $key; $queryBuilder->orderBy($key, $order); } $articlesCount = $countQueryBuilder->getQuery()->getSingleScalarResult(); $query = $queryBuilder->getQuery(); $query->setHint('knp_paginator.count', $articlesCount); return $query; }