При помощи тех.поддержки набросал такое решение:
// Максимальное и минимальное значения поля, приводится к int
public function fieldMinMax( $fieldId, $object_type_id )
{
$field = umiFieldsCollection::getInstance()->getField( $fieldId );
$field_name = $field->getName();
//Получаем все страницы с полученными типами
$sel = new selector( 'pages' );
$sel->types( 'object-type' )->id( $object_type_id );
//Находим минимальное и максимальное значение
$max = 0;
$min = 10000000;
foreach ( $sel as $page )
{
$val = intval( $page->getValue( $field_name ) );
if ( $val > $max )
{
$max = $val;
}
if ( $val < $min )
{
$min = $val;
}
}
return array(
'min' => $min,
'max' => $max
);
}
При помощи тех.поддержки набросал такое решение:
// Максимальное и минимальное значения поля, приводится к int
public function fieldMinMax( $fieldId, $object_type_id )
{
$field = umiFieldsCollection::getInstance()->getField( $fieldId );
$field_name = $field->getName();
//Получаем все страницы с полученными типами
$sel = new selector( 'pages' );
$sel->types( 'object-type' )->id( $object_type_id );
//Находим минимальное и максимальное значение
$max = 0;
$min = 10000000;
foreach ( $sel as $page )
{
$val = intval( $page->getValue( $field_name ) );
if ( $val > $max )
{
$max = $val;
}
if ( $val < $min )
{
$min = $val;
}
}
return array(
'min' => $min,
'max' => $max
);
}
Странный ответ от техподдержки, так как все можно сделать двумя запросами к базе без цикла:
$minSel = new selector('pages');
$minSel->types( 'object-type' )->id( $object_type_id );
$minSel->order($field_name)->asc();
$minSel->limit(0, 1);
$min = 0;
if($minSel->length > 0)
$min = $minSel->result[0]->getValue($field_name);
$minSel->flush();
$maxSel = new selector('pages');
$maxSel->types( 'object-type' )->id( $object_type_id );
$maxSel->order($field_name)->desc();
$maxSel->limit(0, 1);
$max = 0;
if($maxSel->length > 0)
$max = $maxSel->result[0]->getValue($field_name);