Newscoop\Entity\Repository\ArticleRepository::getArticles PHP Метод

getArticles() публичный Метод

Get All Articles from choosen publication (optional: article type and language).
public getArticles ( integer $publication, string $type = null, integer $language = null, $issue = null ) : Doctrine\ORM\Query
$publication integer Publication id
$type string Article type name
$language integer Language id
Результат Doctrine\ORM\Query
    public function getArticles($publication, $type = null, $language = null, $issue = null)
    {
        $em = $this->getEntityManager();
        $queryBuilder = $em->getRepository('Newscoop\\Entity\\Article')->createQueryBuilder('a')->where('a.workflowStatus = :workflowStatus')->andWhere('a.publication = :publication')->setParameters(array('workflowStatus' => 'Y', 'publication' => $publication));
        $countQueryBuilder = $em->getRepository('Newscoop\\Entity\\Article')->createQueryBuilder('a')->select('count(a)')->where('a.workflowStatus = :workflowStatus')->andWhere('a.publication = :publication')->setParameters(array('workflowStatus' => 'Y', 'publication' => $publication));
        if ($type) {
            $countQueryBuilder->andWhere('a.type = :type')->setParameter('type', $type);
            $queryBuilder->andWhere('a.type = :type')->setParameter('type', $type);
        }
        if ($issue) {
            $countQueryBuilder->andWhere('a.issueId = :issue')->setParameter('issue', $issue);
            $queryBuilder->andWhere('a.issueId = :issue')->setParameter('issue', $issue);
        }
        if ($language) {
            $languageId = $em->getRepository('Newscoop\\Entity\\Language')->findOneByCode($language);
            if (!$languageId) {
                throw new NotFoundHttpException('Results with language "' . $language . '" was not found.');
            }
            $countQueryBuilder->andWhere('a.language = :languageId')->setParameter('languageId', $languageId->getId());
            $queryBuilder->andWhere('a.language = :languageId')->setParameter('languageId', $languageId->getId());
        }
        $articlesCount = $countQueryBuilder->getQuery()->getSingleScalarResult();
        $query = $queryBuilder->getQuery();
        $query->setHint('knp_paginator.count', $articlesCount);
        return $query;
    }