public function findClientsByRia(User $ria) { $qb = $this->createQueryBuilder('c')->leftJoin('c.profile', 'p')->leftJoin('c.groups', 'ug')->where('p.ria_user_id = :ria_id')->andWhere('c.roles LIKE :role')->andWhere('p.client_status = :client_status')->groupBy('c.id')->setParameter('role', '%ROLE_CLIENT%')->setParameter('client_status', Profile::CLIENT_STATUS_CLIENT); if (($ria->hasRole('ROLE_RIA_ADMIN') || $ria->hasRole('RIA_USER')) && !$ria->hasGroup('All')) { $groupIds = array(); foreach ($ria->getGroups() as $group) { $groupIds[] = $group->getId(); } $qb->andWhere($qb->expr()->in('ug.id', $groupIds))->setParameter('ria_id', $ria->getRia()->getId()); } else { $qb->setParameter('ria_id', $ria->getId()); } return $qb->getQuery()->getResult(); }