/** * @param Address $address * * @return mixed * @throws UnresolvedGeonameException */ public function getNearestCity(Address $address) { $queryBuilder = $this->getEntityManager()->createQueryBuilder()->select('g')->addSelect('DISTANCE(g.lat,g.lng,:lat,:lng) AS HIDDEN distance')->from(Geoname::SHORTCUT_CLASS_NAME, 'g')->leftJoin('g.translations', 't')->setParameter('lat', $address->getLat())->setParameter('lng', $address->getLng())->orderBy('distance', 'ASC'); $query = $queryBuilder->getQuery()->setMaxResults(1); $results = $query->getResult(); if (is_array($results) && count($results) > 0) { return $results[0]; } throw new UnresolvedGeonameException(); }