Сортировка getMany()

Подскажите пожалуйста, как отсортировать объекты по полю from_date при получении их через getMany().

$c = $modx->newQuery('newEraDtObj');
$c->sortby($sortby, $sortdir);
$items = $modx->getIterator('newEraDtObj', $c);

foreach ($items as $item) {

    $forecast_dtss = $item->getMany('newEraDtForecast');
Необходимо отсортировать объекты получаемые по связи newEraDtForecast по полю from_date
$item->getMany('newEraDtForecast')
Нашел вариант:
$criteria = $modx->newQuery('modResource');
$criteria->where(array(
   'parent' => $modx->resource->get('id'),
));
$criteria->sortby('pagetitle','ASC');
$children = $modx->resource->getMany('Children',$criteria);
Но не понял, как мне его использовать.

Заранее благодарен!
GrinRom
18 февраля 2015, 09:01
modx.pro
1
2 587
0

Комментарии: 3

Володя
18 февраля 2015, 12:27
0
$newEraDtObj = $modx->getObject('newEraDtObj');

$c = $modx->newQuery('newEraDtForecast'));
$c->sortby('from_date', 'ASC');

$forecast_dtss = $newEraDtObj->getMany('newEraDtForecast',$c);
    GrinRom
    18 февраля 2015, 13:04
    0
    Не выходит(((( подскажите, в какой момент вставлять foreach?

    Полный код сниппета:

    $c = $modx->newQuery('newEraDtObj');
    $c->sortby($sortby, $sortdir);
    $items = $modx->getIterator('newEraDtObj', $c);
    
    // Iterate through items
    $list = array();
    /** @var new_eraItem $item */
    
    foreach ($items as $item) {
    
        $orgs = $item->getOne('newEraOrg');
        $org = $orgs->toArray();
    
        $objs = $item->getOne('newEraObj');
        $obj = $objs->toArray();
    
        $obj_types = $objs->getOne('newEraObjTypes');
        $obj_type = $obj_types->toArray();
    
        $ms = $objs->getOne('newEraM');
        $m = $ms->toArray();
    
        $list = $item->toArray();
    
        $newEraDtObj = $modx->getObject('newEraDtObj', $list['id']);
    
        $c = $modx->newQuery('newEraDtForecast');
        $c->sortby('from_date', 'ASC');
    
        $forecast_dtss = $newEraDtObj->getMany('newEraDtForecast',$c);
    
        if ($group['user_group']==3) {
            if ($m['id'] == $extended['m_dostup']) {
                $ts = $item->getOne('newEraDtObjTypes');
                $t = $ts->toArray();
    
                $ws = $item->getOne('newEraWorks');
                $w = $ws->toArray();
    
    
                $output .= '
    <form method="POST" class="form_required" action="javascript:void(null);" id="'.$list['id'].'" onsubmit="send_dt_forecast(['.$list['id'].'])">
    <input type="hidden" name="id_obj" value="'.$list['id'].'">
    <table class="table table-bordered table-forecast">
        <tr>
            <th>' . $list['id'] . '</th>
            <th>' . $list['name'] . '</th>
            <th>' . $list['passport'] . '</th>
            <th>' . $org['name'] . '</th>
            <th>' . $m['name'] . ' -> ' . $obj_type['name'] . ' ' . $obj['name'] . '</th>
            <th>' . $t['name'] . '</th>
            <th>' . $w['name'] . '</th>
        </tr>';
                $output .= '<tr><td colspan="7">';
    
                if ($forecast_dtss) {
                    $k=0;
                    foreach ($forecast_dtss as $forecast_dts) {
                        $k++;
                        $forecast_dt=$forecast_dts->toArray();
                        $output .= '<p>С: <input type="text" class="from" name="from[]" value="'.$forecast_dt['date_from'].'"> По: <input type="text" class="to" name="to[]" value="'.$forecast_dt['date_to'].'"> Планируемый среднесуточный расход ДТ: <input type="text" name="expense[]" value="'.$forecast_dt['expense'].'"> м³ <span class="remove_string"><i class="icon-remove"></i></span></p>';
                    }
                } else {
                    $k=1;
                    $output .= '<p>С: <input type="text" class="form_required_input from" name="from[]"> По: <input type="text" class="form_required_input to" name="to[]"> Планируемый среднесуточный расход ДТ: <input type="text" class="form_required_input only_num_in_field" name="expense[]"> м³</p>';
                }
                $output .= '<p><span class="submit_button btn btn-primary add">Добавить дополнительный период</span> <input value="Сохранить данные" type="submit" class="submit_button btn btn-primary submit_button_send"> <span id="result_'.$list['id'].'"></span></p>
    <input type="hidden" name="num_of_rows" class="num_of_rows" value="'.$k.'"></td></tr>';
                $output .= '</table></form>';
            }
        } else {
            $ts = $item->getOne('newEraDtObjTypes');
            $t = $ts->toArray();
    
            $ws = $item->getOne('newEraWorks');
            $w = $ws->toArray();
    
    
            $output .= '
    <form method="POST" class="form_required" action="javascript:void(null);" id="'.$list['id'].'" onsubmit="send_dt_forecast(['.$list['id'].'])">
    <input type="hidden" name="id_obj" value="'.$list['id'].'">
    <table class="table table-bordered table-forecast">
        <tr>
            <th>' . $list['id'] . '</th>
            <th>' . $list['name'] . '</th>
            <th>' . $list['passport'] . '</th>
            <th>' . $org['name'] . '</th>
            <th>' . $m['name'] . ' -> ' . $obj_type['name'] . ' ' . $obj['name'] . '</th>
            <th>' . $t['name'] . '</th>
            <th>' . $w['name'] . '</th>
        </tr>';
            $output .= '<tr><td colspan="7">';
    
            if ($forecast_dtss) {
                $k=0;
                foreach ($forecast_dtss as $forecast_dts) {
                    $k++;
                    $forecast_dt=$forecast_dts->toArray();
                    $output .= '<p>С: <input type="text" class="from" name="from[]" value="'.$forecast_dt['date_from'].'"> По: <input type="text" class="to" name="to[]" value="'.$forecast_dt['date_to'].'"> Планируемый среднесуточный расход ДТ: <input type="text" name="expense[]" value="'.$forecast_dt['expense'].'"> м³ <span class="remove_string"><i class="icon-remove"></i></span></p>';
                }
            } else {
                $k=1;
                $output .= '<p>С: <input type="text" class="form_required_input from" name="from[]"> По: <input type="text" class="form_required_input to" name="to[]"> Планируемый среднесуточный расход ДТ: <input type="text" class="form_required_input only_num_in_field" name="expense[]"> м³</p>';
            }
            $output .= '<p><span class="submit_button btn btn-primary add">Добавить дополнительный период</span> <input value="Сохранить данные" type="submit" class="submit_button btn btn-primary submit_button_send"> <span id="result_'.$list['id'].'"></span></p>
    <input type="hidden" name="num_of_rows" class="num_of_rows" value="'.$k.'"></td></tr>';
            $output .= '</table></form>';
        }
    }
      GrinRom
      18 февраля 2015, 15:02
      0
      Нашел решение:
      $sortby = $modx->getOption('sortby', $scriptProperties, 'date_from');
          $sortdir = $modx->getOption('sortbir', $scriptProperties, 'ASC');
      
          $c = $modx->newQuery('newEraDtForecast');
          $c->where(array(
              'id_obj' => $list['id'],
          ));
          $c->sortby($sortby, $sortdir);
          $forecast_dtss = $modx->getIterator('newEraDtForecast', $c);
          $count_dtss = $modx->getCount('newEraDtForecast', $c);
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    3