inavo
@inavo

Как получить id всех элементов с привязкой к элементам в свойствах?

Есть инфоблок "один" с группой элементов и инфоблок "два" с группой элементов.
У элементов блока 1 добавлено свойство "привязка к элементам" с помощью которого к элементам блока 1 привязываются элементы блока 2 в качестве свойств.

Всё хорошо, пока нам необходимо получить свойства элементов блока 2 в шаблоке элемента, это можно сделать через параметр
$arResult[PROPERTIES][СИМВОЛЬНЫЙКОДСВОЙСТВА][VALUE]

Но если потребуется получить свойство в секции блока 1 где выводятся все элементы 1, то возникает проблема, т.к. PROPERTIES в arResult уже не попадают и даже через getList по id элемента их нет.

Так вот собственно вопрос, как зная свойства элемента 2 (или может блока 2?) можно получить все элементы 1 у которых есть привязка к элементу 2 ?
  • Вопрос задан
  • 332 просмотра
Пригласить эксперта
Ответы на вопрос 2
askunash
@askunash
Тренер Битрикс
Триллер блин)
Гетлист это лечит, смотрите параметры.
Вообще связь таблиц в обе стороны без прослойки в любой бд плохая идея.
Ответ написан
@Firsov36
full-stack web developer
Если старым способом то так:

$propertyBrandValue = 'НАЗВАНИЕ';
$iBlockId_1 = 9;

$res = CIBlockElement::GetList(array(),
    array(
        'IBLOCK_ID' => $iBlockId_1,
        '=PROPERTY_C_BRANDS.NAME' => $propertyBrandValue
    ),
    false,
    array('nTopCount' => 10),
    array('ID', 'IBLOCK_ID', 'NAME')
);

while($el = $res->GetNext()) {
    \Bitrix\Main\Diag\Debug::dump($el);
}


=PROPERTY_C_BRANDS.NAME - тут NAME меняете на поле или свойство. Описание метода и фильтрации тут: документация Битрикс

Но сразу учтите, что этот вариант делает большие запросы и с некоторого времени не советуется на нагруженных сайтах.

На ORM можно разными способами от среднего до сложного, но это уже надо видеть где вы используете этот код, чтобы выбрать каким путем идти. Способ сложнее, но зато простые и быстрые запросы.

Ну и я не уверен, что у Вас там вообще никаких значений первого ИБ нету.

В общем представленный код рабочий и проверен, дальше думайте сами.
Ответ написан
Ваш ответ на вопрос

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

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