public function getAdsByGPSAndUserIdAndLanguageId(array $parameters, $userId, $languageId) { $longitude = $parameters['longitude']; $latitude = $parameters['latitude']; $radius = sfConfig::get('app_radius', '100'); $adIds = Doctrine_Manager::getInstance()->getCurrentConnection()->fetchColumn( SELECT ad_id FROM office INNER JOIN office_ads ON (office_ads.office_id=office.id) WHERE ST_DWithin(office_gps, ST_GeographyFromText(SRID=4326;POINT($longitude $latitude)), $radius)); foreach ($adIds as $adId) { $adIds[] = Doctrine_Manager::getInstance()->getCurrentConnection()->fetchOne( SELECT ad.id FROM ad INNER JOIN company_category ON (ad.company_categ_id=company_category.id) INNER JOIN general_category ON (company_category.general_categ_id=general_category.id) INNER JOIN user_basket ON (user_basket.general_categ_id=general_category.id) WHERE user_id=$userId AND ad.id=$adId); } $ads = array(); foreach($adIds as $adId) $ads[] = $this->findOneByAdIdAndLanguageId($adId, $languageId); return $ads; }