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

getArticlesForTopic() public method

Get Articles for choosen topic.
public getArticlesForTopic ( integer $publication, integer $topicId, integer $language = false, boolean $getResultAndCount = false, $order = null ) : Doctrine\ORM\Query
$publication integer
$topicId integer
$language integer
$getResultAndCount boolean
return Doctrine\ORM\Query
    public function getArticlesForTopic($publication, $topicId, $language = false, $getResultAndCount = false, $order = null)
    {
        $em = $this->getEntityManager();
        $queryBuilder = $em->getRepository('Newscoop\\Entity\\Article')->createQueryBuilder('a')->select('a', 'att')->where('att.id = :topicId')->join('a.topics', 'att')->setParameter('topicId', $topicId);
        if ($order !== null) {
            $queryBuilder->orderBy('a.published', $order);
        }
        $countQueryBuilder = $em->getRepository('Newscoop\\Entity\\Article')->createQueryBuilder('a')->select('count(a)')->where('att.id = :topicId')->join('a.topics', 'att')->setParameter('topicId', $topicId);
        if ($language) {
            $queryBuilder->andWhere('att.language = :language')->setParameter('language', $language);
            $countQueryBuilder->andWhere('att.language = :language')->setParameter('language', $language);
        }
        $articlesCount = $countQueryBuilder->getQuery()->getSingleScalarResult();
        $query = $queryBuilder->getQuery();
        $query->setHint('knp_paginator.count', $articlesCount);
        if ($getResultAndCount) {
            return array('result' => $query->getResult(), 'count' => $articlesCount);
        }
        return $query;
    }