- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/lib/orm/propertytofield.php
- Класс: BitrixIblockORMPropertyToField
- Вызов: PropertyToField::attachField
static function attachField($property, $propertyValueEntity)
{
switch ($property->getPropertyType())
{
case PropertyTable::TYPE_STRING:
$propertyValueEntity->addField(new StringField('VALUE'));
break;
case PropertyTable::TYPE_NUMBER:
$propertyValueEntity->addField(new FloatField('VALUE'));
break;
case PropertyTable::TYPE_FILE:
$propertyValueEntity->addField(new IntegerField('VALUE'));
// add reference to file
$propertyValueEntity->addField(new Reference(
'FILE', FileTable::class,
Join::on("this.VALUE", 'ref.ID')
));
break;
case PropertyTable::TYPE_ELEMENT:
$propertyValueEntity->addField(new IntegerField('VALUE'));
// add reference to element
$refIblock = Iblock::wakeUp($property->getLinkIblockId());
$refIblock->fill('API_CODE');
if($refIblock->getApiCode() <> '')
{
$refEntityName = $refIblock->getEntityDataClass();
$propertyValueEntity->addField(
new Reference('ELEMENT', $refEntityName, Join::on("this.VALUE", 'ref.ID'))
);
}
break;
case PropertyTable::TYPE_SECTION:
$propertyValueEntity->addField(new IntegerField('VALUE'));
// add reference to section
$propertyValueEntity->addField(new Reference(
'SECTION', SectionTable::class,
Join::on("this.VALUE", 'ref.ID')
));
break;
case PropertyTable::TYPE_LIST:
$propertyValueEntity->addField(new IntegerField('VALUE'));
// add reference to list item
$propertyValueEntity->addField(new Reference(
'ITEM',
PropertyEnumerationTable::class,
Join::on('this.VALUE', 'ref.ID')
));
break;
}
}