Сортировка 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);
Но не понял, как мне его использовать.Заранее благодарен!
Комментарии: 3
$newEraDtObj = $modx->getObject('newEraDtObj');
$c = $modx->newQuery('newEraDtForecast'));
$c->sortby('from_date', 'ASC');
$forecast_dtss = $newEraDtObj->getMany('newEraDtForecast',$c);
Не выходит(((( подскажите, в какой момент вставлять 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>';
}
}
Нашел решение:
$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);
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.