Newscoop\Entity\Repository\ArticleRepository::getArticlesForAuthor PHP Method

getArticlesForAuthor() public method

Get Articles for author.
public getArticlesForAuthor ( Author $author, Criteria $criteria ) : Doctrine\ORM\Query
$author Newscoop\Entity\Author
$criteria Newscoop\Criteria
return Doctrine\ORM\Query
    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;
    }