Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Сортировка по связанным элементам

00 голосов
1

Коллеги, требуется помощь. 
Имеем 2 инфоблока А) компании Б) вакансии 
В инфоблоке вакансии есть доп свойство с привязкой элементов (компании). 

Подскажите как отсортировать элементы, ума не приложу:

Код
<?
CModule::IncludeModule('iblock');
$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM", "PROPERTY_LOGO");
$arFilter = Array("IBLOCK_ID"=>"30", "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "!PROPERTY_LOGO"=>false);
$res = CIBlockElement::GetList(Array($count =>"DESC"), $arFilter, false, Array("nPageSize"=>50), $arSelect);

while($ob = $res->GetNextElement())
{
 $arFields = $ob->GetFields();
$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM", "PROPERTY_COMPANY");
 $arFilter = array(
    'IBLOCK_ID' => 6,
   'ACTIVE'=>"Y",
      'PROPERTY_COMPANY' => $arFields["ID"]
   
);
$ress = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
$count=$ress->SelectedRowsCount();

?> 


<? print_r_admin($arFields);?>
<?=sklon($count,array("вакансия","вакансии","вакансий"))?>

 <?
}
?> 

Сейчас все выводится и считается, но вот отсортировать список компаний по кол-ву связанных элементов не получается.

спросил 09 Июнь, 15 от аноним

1 Ответ

00 голосов
"В лоб", как я понимаю, это не решить. А так могу 2 способа предложить.

Если количество элементов не очень большое - можно собрать все данные в массив и отсортировать в php. Подвидом этого способа является случай, когда сортировка применяется на урезанных данных - из БД выбираются только ID и влияющие на сортировку поля. Затем в php коде мы делаем сортировку и постраничку, и получив ID элементов, которые нам нужны для вывода на этой странице, получаем из БД полный комплект данных.

Ну и второй способ - завести дополнительное свойство, в котором считать количество связанных элементов. Обновлять с помощью событий элементов инфоблока. Так будет быстрее всего.
ответил 09 Июнь, 15 от root (25,590 баллов)

Похожие вопросы

0 голосов
1 ответ
0 голосов
2 ответов
0 голосов
1 ответ
спросил 20 Июль, 15 от Rattlesneyk (140 баллов)