Подробнее о базовых типах свойств
| ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
В обычном случае сущность свойства состоит из двух полей - VALUE (тип зависит от свойства) и, если определено настройками свойства, DESCRIPTION (StringField).
|
Дата последнего изменения: 08.11.2023
Каждый инфоблок является самостоятельным типом данных со своим собственным набором свойств. В ORM он представляется отдельной сущностью:
Имя классов сущности включает в себя значение нового поля из настроек инфоблока Символьный код API. За счет этого кода обеспечивается уникальность классов вне зависимости от ID и среды окружения.
Свойства - это не просто скалярные значения, а отношения с отдельными мини-сущностями с двумя ключевыми полями: VALUE и DESCRIPTION. Единичные свойства представляются в элементе инфоблока полем Reference, множественные - OneToMany:
В сущности некоторых типов свойств могут быть добавлены дополнительные поля, например ссылка на привязанный элемент инфоблока:
Подробнее о базовых типах свойств
| ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
В обычном случае сущность свойства состоит из двух полей - VALUE (тип зависит от свойства) и, если определено настройками свойства, DESCRIPTION (StringField).
|
Ориентироваться среди большого количества свойств поможет
механизм аннотаций
Большая часть методов Объекта и Коллекции - виртуальные, обрабатываются через magic вызов __call. В то же время они сделаны для интуитивно понятных и говорящих именованных методов, и без автокомплита в IDE их ценность резко снижается.
Чтобы IDE все же знала об их существовании и помогала ориентироваться в большом количестве классов и методов, мы сделали для нее специальный служебный файл с аннотациями всех сущностей.
Подробнее ...
. При индексации модуля iblock все инфоблоки будут описаны в виде сущностей ORM. Для получения подсказок в коде необходимо явно обозначить класс инфоблока:
// подключение модуля инфоблоков \Bitrix\Main\Loader::includeModule('iblock'); // вводные данные $iblockId = 32; $iblockElementId = 678; // объект инфоблока $iblock = \Bitrix\Iblock\Iblock::wakeUp($iblockId); // объект элемента /** @var \Bitrix\Iblock\Elements\EO_ElementLink $element */ $element = $iblock->getEntityDataClass()::getByPrimary($iblockElementId) ->fetchObject(); // получение свойства SOME_STRING $element->getSomeString();
Автолоадинг классов автоматически обработает вызов getEntityDataClass()
, т.е. вам не придется предварительно компилировать сущность инфоблока.
Если вы хотите использовать подсказки IDE по типизации элемента инфоблока, необходимо явно задать его класс аннотацией вида:
/** @var \Bitrix\Iblock\Elements\EO_ElementLink $element */
/** @var \Bitrix\Iblock\Elements\EO_ElementLink_Collection $element */