Как сделать вывод связанных highload блоков?

Есть highload блок, у одного из полей указан тип "Привязка к элементам highload блоков".

Вывожу с помощью getList список свойств, но вывод поля привязки происходит просто id: 1, 2 3 ...

use Bitrix\Highloadblock\HighloadBlockTable as HLBT;
const MY_HL_BLOCK_ID = 91;
CModule::IncludeModule('highloadblock');

function GetEntityDataClass($HlBlockId) {
    if (empty($HlBlockId) || $HlBlockId < 1)
    {
        return false;
    }
    $hlblock = HLBT::getById($HlBlockId)->fetch();
    $entity = HLBT::compileEntity($hlblock);
    $entity_data_class = $entity->getDataClass();
    return $entity_data_class;
}

$entity_data_class = GetEntityDataClass(MY_HL_BLOCK_ID);
$rsData = $entity_data_class::getList(array(
    'select' => array('*')
));
while($el = $rsData->fetch()){
    print_r($el);
}


Что нужно прописать в свойстве 'filter' ?
  • Вопрос задан
  • 1968 просмотров
Решения вопроса 1
gromdron
@gromdron
Работаю с Bitrix24
Я Вам уже на форуме Битрикса отвечал, но попробую и тут дать ответ.

Все дело в том, что Вы не понимаете как Битрикс это хранит и интерпретирует.
По факту он не обрабатывает, а просто достает это из базы данных как есть.
Можно достать связанные поля, но по правилам реляции ORM (а highloadblock это по факту ORM), при наличии Вашего кейса Вам вернется не 1 элемент с 3 вложенными структурами, а 3 элемента, каждый из которых будет содержать по 1 элементу.

Логика повторяющая поведение "Инфоблоки 1.0".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы