73  /  396

Чтение и запись

Просмотров: 267 (Статистика ведётся с 06.02.2017)
Марина Павлова

Для получения значений свойств достаточно указать их имена в запросе:

$elements = $iblock->getEntityDataClass()::getList([
    'select' => ['ID', 'SOME_FIELD', 'ANOTHER_FIELD.ELEMENT']
])->fetchCollection();

foreach ($elements as $element)
{
    echo $element->getSomeField()->getValue();
    echo $element->getAnotherField()->getElement()->getTitle();
}

Поддерживаются стандартные механики отношений ORM.

Для создания нового объекта можно использовать как конструктор соответствующего класса,

$newElement = new \Bitrix\Iblock\Elements\EO_ElementLink;

так и фабрику сущности.

$newElement = $iblock->getEntityDataClass()::createObject();

Изменение значений и описаний свойств происходит непосредственно через объект свойства:

// установка строкового значения
$element->getSomeString()->setValue('new value');

// установка описания
$element->getSomeString()->setDescription('new descr');

// установка привязки к элементу
$element->getSomeElement()->setElement($anotherElement);

Кроме этого, можно поставить значение напрямую в поле свойства:

$element->setSomeString('new value');

А также можно воспользоваться псевдо объектом значения свойства Bitrix\Iblock\ORM\PropertyValue:

use Bitrix\Iblock\ORM\PropertyValue;

// только значение
$value = new PropertyValue('new value');

// значение и описание
$value = new PropertyValue('new value', 'new descr');

// установка значения/описания
$element->setSomeString($value);  

Установка значений для множественных свойств работает аналогично с той лишь разницей, что речь идет не о Reference, а об отношении OneToMany:

use Bitrix\Iblock\ORM\PropertyValue;

foreach ($element->getOtherField() as $value)
{
    $value->setValue('new value');
    $value->setDescription('new descr');
}

$element->addToOtherField(new PropertyValue('new value'));
$element->addToOtherField(new PropertyValue('new value', 'new descr'));

Объект элемента сохраняется так же, как и любой другой объект ORM:

$element->save();

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

Удалить элемент можно через метод объекта delete:

$element->delete();

При удалении так же, как и при сохранении, значения свойств обрабатываются автоматически. Удалятся и привязки к секциям.

1
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии