Сохранение записи (обновление существующей записи или ее создание)
Для сохранения записи, унаследованной от Entity\DataManager, можно делать проверку на существование, затем - обновлять, либо создавать новую.
В примере первичный ключ ID
. Однако, фактически используется составной ключ ORDER_GUID
PARENT_GUID
.
Если запись будет найдена, она обновится. Иначе - создастся.
- save.php
public static function save($data) { if(!isset($data['ORDER_GUID'], $data['PARENT_GUID'])) throw new \Bitrix\Main\ArgumentNullException("Wrong keys", 1); $list = self::getList([ 'select' => ['ID'], 'filter' => ['=ORDER_GUID' => $data['ORDER_GUID'], '=PARENT_GUID' => $data['PARENT_GUID']], 'limit' => 1 ]); if($list->getSelectedRowsCount() == 0) { return self::add($data); } else { $it = $list->fetch(); return self::update($it['ID'], $data); } }
Более простой вариант: создание или обновление записи по ID
:
- save_id.php
public static function save($data) { if(!isset($data['ID'])) { return self::add($data); } return self::update($data['ID'], $data); }