Спасибо за подсказку, Владимир. Но так и не нашел этой темы.
В итоге родилось у меня следующее решение. Очень простое кстати.
Нужно было искать не дом с квартирами, а квартиры удовлетворяющие условиям и брать их родителя (то есть дом) для дальнейшей работы.
Привожу листинг кода.
public function getRelatedOffers($element_id, $metro, $price) {
$sel = new selector('pages');
if(isset($price) && $price != ""){
$sel->types('object-type')->id(860);
$sel->where('hierarchy')->page('/object-info/')->childs(2);
}else{
$sel->types('object-type')->id(853);
$sel->where('hierarchy')->page('/object-info/')->childs(1);
}
$hierarchy = umiHierarchy::getInstance();
if(isset($price) && $price != ""){//Если передан параметр price, то мы ищем самые дешевые квартиры в домах по заданному диапазону цен
$flats = $hierarchy->getChilds($element_id);
foreach ($flats as $key => $value){
$prices_and_names[] = array($hierarchy->getElement($key)->getValue('cena_ot'), $hierarchy->getElement($key)->getName());
}
$price = min($prices_and_names);
$min_price = $price[0] * 0.85;
$max_price = $price[0] * 1.15;
$sel->where("cena_ot")->between($min_price, $max_price);
$sel->where("name")->equals($price[1]);
}
$sel->order('rand');
$sel->limit(0, 6);
foreach($sel->result as $house) {
if(isset($price) && $price != ""){//Если передан параметр price, то получаем экземпляр родителя страницы (т.е. получаем id дома)
$house = umiHierarchy::getInstance()->getElement(umiHierarchy::getInstance()->getElement($house->id)->getParentId());
}
//далее делаем что нам нужно с каждым элементом
...
}
}
Конечно правильнее было бы написать прямой sql запрос, чтобы увеличить быстродействие. Но так как я не умею писать запросы, реализовал выборку средствами api.
берите код в теги code, т.е. {code} какой-то код {/code}
только не круглые скобки, а квадратные, смотрится в разы читабельнее
На счет запросов, во первых запрос можно посмотреть. Добавьте в код:
$sql_query_string=$sel ->query();
return $sql_query_string;
и увидите свой запрос, только не рекомендуется пользоваться прямыми запросами, могут возникнуть проблемы при обновлении, структуру таблиц могут изменить в любой момент.
А времени вы много не сэкономите, запрос выполняется гораздо дольше, чем его формирование