Newscoop\Services\AuthorService::getAuthors PHP Метод

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

Get authors
public getAuthors ( string $term = null, integer $limit = null, boolean $alsoUsers = false ) : array
$term string Search term
$limit integer Max results
$alsoUsers boolean Also return users
Результат array
    public function getAuthors($term = null, $limit = null, $alsoUsers = false)
    {
        $qb = $this->em->createQueryBuilder();
        $qb->select("trim(concat(aa.first_name, concat(' ', aa.last_name))) as title")->from('Newscoop\\Entity\\Author', 'aa');
        if ($term !== null && trim($term) !== '') {
            $qb->where($qb->expr()->like('aa.last_name', ':term'))->orWhere($qb->expr()->like('aa.first_name', ':term'))->orWhere($qb->expr()->like('concat(aa.first_name, concat(\' \', aa.last_name))', ':term'))->setParameter('term', $term . '%')->groupBy('aa.last_name', 'aa.first_name');
        }
        if (!is_null($limit)) {
            $qb->setMaxResults($limit);
        }
        $authorsArray = $qb->getQuery()->getArrayResult();
        if ($alsoUsers) {
            $qbUsers = clone $qb;
            $qbUsers->resetDQLPart('from');
            $qbUsers->from('Newscoop\\Entity\\User', 'aa');
            $usersArray = $qbUsers->getQuery()->getArrayResult();
            $authorsArray = array_unique(array_merge($authorsArray, $usersArray), SORT_REGULAR);
        }
        return $authorsArray;
    }