Пример выборки заказов в интернет-магазине UMI.CMS

Пример выборки заказов в интернет-магазине UMI.CMS

Для примера выберем что-нибудь не сложное и не слишком примитивное. Пусть это будут заказы в магазине.

Будем выбирать заказы со статусом "Готово" (2759). Как получено это значение заморачиваться не будем, это отдельный вопрос.

$status = 2759;

$curr_page = (int) getRequest('p');
$per_page = 20;

$hierarchyTypes = umiHierarchyTypesCollection::getInstance();
$objectTypes = umiObjectTypesCollection::getInstance();

//определяем ид иерархии по имени объекта
//можно для упрощения подставить сюда ид напрямую, если он известен, но мы же тренируемся)
$iHierarchyTypeId = $hierarchyTypes->getTypeByName("eshop", "order")->getId();

//определяем ид типа объекта по ид иерархии
$iObjectTypeId = $objectTypes->getTypeByHierarchyTypeId($iHierarchyTypeId);

$sel = new umiSelection;
$sel->addLimit($per_page, $curr_page);
$sel->addObjectType($iObjectTypeId);//устанавливаем фильтр по типу объекта


//определяем ид полей времени заказа(по нему будем упорядочивать) и статуса заказа
$oObjectType = umiObjectTypesCollection::getInstance()->getType($iObjectTypeId);
$iOrderTimeId = $oObjectType->getFieldId('order_time');
$iStatus = $oObjectType->getFieldId('status');

//теперь можем задать упорядочение и фильтр
$sel->setOrderByProperty($iOrderTimeId, false);
$sel->addPropertyFilterEqual($iStatus, $status);

$res = umiSelectionsParser::runSelection($sel);
$total = umiSelectionsParser::runSelectionCounts($sel);

//выводим результат - массив ид объектов
if($res){
foreach($res as $id){
 echo $id.'<br>';

 }
}

Если выбираем только страницы, то нужно принудительно указать UMI.CMS выбирать только элементы иерархии

forceHierarchyTable(true);

 



=================
2011-07-23