Задать вопрос
@Yariy

Почему не работают два ReferenceField в ORM?

По отдельности
$dbProducts = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
    'select' => ['ID', 'PREVIEW_PICTURE', 'DETAIL_PICTURE', 'ACTIVE', 'NAME', 'CATALOG_INFO.ID'],
    'filter' => [],
    'runtime' =>
        [
            new \Bitrix\Main\Entity\ReferenceField(
                'CATALOG_INFO',
                '\Bitrix\Catalog\ProductTable',
                ["=this.ID" => "ref.ID"],
                ["join_type"=>"left"]
            ),
        ],
]);

и
$dbProducts = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
    'select' => ['ID', 'PREVIEW_PICTURE', 'DETAIL_PICTURE', 'ACTIVE', 'NAME', 'RESERVE_INFO.ID'],
    'filter' => [],
    'runtime' =>
        [
            new \Bitrix\Main\Entity\ReferenceField(
                'RESERVE_INFO',
                '\Korus\Orm\ReserveProductsTable',
                ["=this.ID" => "ref.UF_PRODUCT_ID"],
                ["join_type"=>"left"]
            ),
        ],
]);

Отрабатывают и возвращают элементы. Однако, если использовать оба референса
$dbProducts = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
    'select' => ['ID', 'PREVIEW_PICTURE', 'DETAIL_PICTURE', 'ACTIVE', 'NAME', 'RESERVE_INFO.ID'],
    'filter' => [],
    'runtime' =>
        [
            new \Bitrix\Main\Entity\ReferenceField(
                'RESERVE_INFO',
                '\Korus\Orm\ReserveProductsTable',
                ["=this.ID" => "ref.UF_PRODUCT_ID"],
                ["join_type"=>"left"]
            ),
        ],
    [
        new \Bitrix\Main\Entity\ReferenceField(
            'CATALOG_INFO',
            '\Bitrix\Catalog\ProductTable',
            ["=this.ID" => "ref.ID"],
            ["join_type"=>"left"]
        ),
    ]
]);

То получаем ошибку
Unknown field definition `` (.*) for \Bitrix\Iblock\Elements\ElementCatalog Entity.


Бьюсь уже несколько дней - не могу понять, в чем проблема
  • Вопрос задан
  • 924 просмотра
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@Yariy Автор вопроса
$dbProducts = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
    'select' => ['ID', 'PREVIEW_PICTURE', 'DETAIL_PICTURE', 'ACTIVE', 'NAME', 'RESERVE_INFO.ID'],
    'filter' => [],
    'runtime' => [
            new \Bitrix\Main\Entity\ReferenceField(
                'RESERVE_INFO',
                '\Korus\Orm\ReserveProductsTable',
                ["=this.ID" => "ref.UF_PRODUCT_ID"],
                ["join_type"=>"left"]
            ),
        new \Bitrix\Main\Entity\ReferenceField(
            'CATALOG_INFO',
            '\Bitrix\Catalog\ProductTable',
            ["=this.ID" => "ref.ID"],
            ["join_type"=>"left"]
        ),
    ]
]);


Все, теперь понял, спасибо
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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