поле, выбор из 2х вариантов. XML_ID 1 и 2. Что бы не передавал (id, xml_id, текстовое значение) не сохраняет нужный выбор. В админке просто неустановленное значение (это при том, что оно обязательное).
Iblock::wakeUp($Id)->getEntityDataClass();
ElementConstructorTable::add([
'CODE' => uniqid(more_entropy: true),
'STATUS' => 2,
Если известен id, то через метод update. Если нет, то сначала получить элемент из таблицы, у полученого объекта orm поменять нужное свойство через неименованный сеттер set() или именнованный setStatus(), потом вызвать метод save, или создать новый объект через createObject(), если элемента в базе нет, ну а дальше через метод save(), это я уже описал. Ну и доку читайте, там это есть и описано
Я создаю элемент, еще еще нет в таблице.
Через создание и редактирование это понятно, что можно. Меня как раз метод ORM ::add интересовал. Проверять свойство он проверяет, но в БД не сохраняет. Видимо недопилили его.
Есть хак периодически решающий похожие проблемы, в настройках ИБ перенесите хранение св-в в отдельную таблицу. Может поможет в вашем случае
это вообще правильно хранить каждый инфоблок в отдельной таблице.
Не прокатило, ну ладно, есть же старинный рабочий CIBlockElement. D7 уже столько лет пилят, все никак не допилят, либо очень многословно получается.
Вообще d7 прост как калаш и если вы передали значение правильно назвав код - он должен его записать. Проверьте название поля в таблице.
Всё на D7 работает отлично, только объектный ORM используем. Создаёте объект (createObject) Устанавливаете значение ($element->setStatus($statusId) Записываете данные ($element->save())
Я не этот подход тестировал, а через метод add
Ну если уж делать через ORM, то сначала orm-объект создаем, наполняем его данными и вызываем метод save(), он отвечает за создание или изменение существующих элементов или коллекций orm-объектов, он сам решает, что ему надо сделать с orm-объектом. Ну на счет add он должен работать, потому что save() внутри себя дергает add() или update()
я нашел почему add не работает. Там берут только скалярный значения. А свойства это FieldTypeMask::REFERENCE \Bitrix\Main\ORM\Data\DataManager::add:892 $fields = $object->collectValues(Values::CURRENT, FieldTypeMask::SCALAR);
Обсуждают сегодня