@Vlad16
Веб-программист

Как убрать дублирование элемента с множественным свойством когда получаешь его через \Bitrix\Iblock\Elements\ElementXXXTable::getList?

Сейчас когда в множественном свойстве элемента выбрано 2 варианта элемент повторяется 2 раза и getCount объекта результата отдает 2 элемента вместо 1-го. Можно ли это поправить?
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 1
@KukuRuku
MULTIPLE — код множественного свойства, тип Список:

$iBlock = \Bitrix\Iblock\Iblock::wakeUp(1)->getEntityDataClass();
$iterator = $iBlock::getList([
    'select' => ['ID', 'NAME', 'MULTIPLE']
    , 'filter' => \Bitrix\Main\ORM\Query\Query::filter()
        ->where('ID', 1)
]);

$elements = $iterator->fetchCollection();
foreach ($elements as $element) {
    var_dump($element->getId());
    var_dump($element->getName());

    foreach ($element->getMultiple()->getAll() as $prop) {
        var_dump($prop->getId());
        var_dump($prop->getValue());
    }
}


Или, если через fetch()/fetchAll(), то самостоятельно сложить в массив, где ключом будет ID элемента.

БД всегда будет дублировать данные по таблице элементов, поскольку значений в таблице со свойствами больше одного, а в запросе идёт объединение этих таблиц.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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