Newscoop\Entity\Repository\UserRepository::findUsersLastNameInRange PHP Method

findUsersLastNameInRange() public method

Return Users if their last name begins with one of the letter passed in.
public findUsersLastNameInRange ( array $letters, $countOnly, $offset, $limit, $firstName = false ) : array
$letters array = ['a', 'b']
return array Newscoop\Entity\User
    public function findUsersLastNameInRange($letters, $countOnly, $offset, $limit, $firstName = false)
    {
        $qb = $this->getEntityManager()->createQueryBuilder();
        if ($countOnly) {
            $qb->select('COUNT(u.id)');
        } else {
            $qb->select('u');
        }
        $qb->from('Newscoop\\Entity\\User', 'u');
        $qb->where($qb->expr()->eq("u.status", User::STATUS_ACTIVE));
        $qb->andWhere($qb->expr()->eq("u.is_public", true));
        $letterIndex = $qb->expr()->orx();
        for ($i = 0; $i < count($letters); $i++) {
            $letterIndex->add($qb->expr()->like("LOWER(u.last_name)", "'{$letters[$i]}%'"));
            if ($firstName) {
                $letterIndex->add($qb->expr()->like("LOWER(u.first_name)", "'{$letters[$i]}%'"));
            }
        }
        $qb->andWhere($letterIndex);
        if ($countOnly === false) {
            $qb->orderBy('u.username', 'ASC');
            $qb->addOrderBy('u.id', 'ASC');
            $qb->setFirstResult($offset);
            $qb->setMaxResults($limit);
            return $qb->getQuery()->getResult();
        } else {
            return $qb->getQuery()->getOneOrNullResult();
        }
    }