===== Добавление минимальной и максимальной цены на основе товаров группы и её подгрупп ===== id])) { // Получаем подгруппы $aGroupsId = array(); $currGroupId = $object->id; $aGroupsId[] = $currGroupId; $aoCurGroups = array(Core_Entity::factory('Shop_group', $currGroupId)); do{ $aoParGroups = $aoCurGroups; $aCurGroupsId = array(); $aoCurGroups = array(); foreach($aoParGroups as $oParGroup) { $aCurGroupsId[] = $oParGroup->id; $aGroupsId[] = $oParGroup->id; } $aGroups = Core_Entity::factory('Shop_group'); $aGroups->queryBuilder() ->where('parent_id', 'IN', $aCurGroupsId); $aoCurGroups = $aGroups->findAll(); }while(count($aoCurGroups) != 0); $oQB = Core_QueryBuilder::select(array('max(price)', 'max'), array('min(price)', 'min')) ->from('shop_items') ->where('shop_group_id', 'IN', $aGroupsId); $aRes = $oQB->execute()->asAssoc()->result(); $min = $aRes[0]['min']; $max = $aRes[0]['max']; self::$aCache[$object->id]['min'] = $min; self::$aCache[$object->id]['max'] = $max; } else { $min = self::$aCache[$object->id]['min']; $max = self::$aCache[$object->id]['max']; } $object ->addEntity( Core::factory('Core_Xml_Entity') ->name('min_price') ->value($min) ) ->addEntity( Core::factory('Core_Xml_Entity') ->name('max_price') ->value($max) ); } }