Блог Горошко Андрея 1C-Битрикс CRUD-операции в Bitrix D7 ORM: add, update, delete на практике

CRUD-операции в Bitrix D7 ORM: add, update, delete на практике

Средний рейтинг
Еще нет оценок

Мы уже рассмотрели, как выбирать данные с помощью getList в D7 ORM. Теперь давайте разберем полный цикл CRUD-операций (Create, Read, Update, Delete), который позволяет полностью управлять данными любой сущности — будь то элемент инфоблока, раздел или запись в Highload-блоке.

Все ORM-классы (ElementTable, SectionTable, *Table) наследуются от \Bitrix\Main\Entity\DataManager и предоставляют унифицированные методы: add, update, delete.

1. Создание (Create) с помощью метода add

Метод add принимает один аргумент — массив с данными для новой записи.

Синтаксис:
\Namespace\MyTable::add(array $data)

Возвращаемое значение:
Объект \Bitrix\Main\Entity\AddResult. С его помощью можно проверить успешность операции и получить ID новой записи.

Пример: Добавление нового элемента в инфоблок

use Bitrix\Main\Loader;
use Bitrix\Iblock\ElementTable;

Loader::includeModule('iblock');

$data = [
    "IBLOCK_ID" => 5,
    "NAME" => "Новый элемент через D7 ORM",
    "CODE" => "new-element-d7",
    "ACTIVE" => "Y"
];

$result = ElementTable::add($data);

if ($result->isSuccess()) {
    $newId = $result->getId();
    echo "Элемент успешно создан с ID: " . $newId;
} else {
    $errors = $result->getErrorMessages();
    echo "Произошли ошибки: <br>" . implode("<br>", $errors);
}

2. Обновление (Update) с помощью метода update

Метод update принимает два аргумента: первичный ключ записи (обычно ID) и массив с полями, которые нужно обновить.

Синтаксис:
\Namespace\MyTable::update($primaryKey, array $data)

Возвращаемое значение:
Объект \Bitrix\Main\Entity\UpdateResult.

Пример: Обновление названия и деактивация элемента

$idToUpdate = 123; // ID элемента для обновления

$data = [
    "NAME" => "Обновленное название элемента",
    "ACTIVE" => "N"
];

$result = ElementTable::update($idToUpdate, $data);

if ($result->isSuccess()) {
    echo "Элемент с ID {$idToUpdate} успешно обновлен.";
} else {
    $errors = $result->getErrorMessages();
    echo "Произошли ошибки: <br>" . implode("<br>", $errors);
}

3. Удаление (Delete) с помощью метода delete

Метод delete принимает первичный ключ записи, которую нужно удалить.

Синтаксис:
\Namespace\MyTable::delete($primaryKey)

Возвращаемое значение:
Объект \Bitrix\Main\Entity\DeleteResult.

Пример: Удаление элемента

$idToDelete = 125;

$result = ElementTable::delete($idToDelete);

if ($result->isSuccess()) {
    echo "Элемент с ID {$idToDelete} успешно удален.";
} else {
    $errors = $result->getErrorMessages();
    echo "Произошли ошибки: <br>" . implode("<br>", $errors);
}

Ключевые методы объекта Result

Все три метода (add, update, delete) возвращают объект-результат, у которого есть два важнейших метода:

  • $result->isSuccess(): Возвращает true, если операция прошла без ошибок, и false в противном случае. Всегда проверяйте результат!
  • $result->getErrorMessages(): Возвращает массив с текстовыми сообщениями об ошибках, если isSuccess() вернул false.

Работа со свойствами

Для работы со свойствами при добавлении/обновлении через ElementTable используется специальный ключ PROPERTY_VALUES.

// Добавляем элемент со свойством
$data = [
    "IBLOCK_ID" => 5,
    "NAME" => "Элемент со свойством",
    "PROPERTY_VALUES" => [
        "MY_PROPERTY_CODE" => "Значение свойства"
    ]
];

$result = ElementTable::add($data);

Вывод:
D7 ORM предоставляет невероятно удобный и, что самое главное, единообразный API для всех операций с данными. Независимо от того, работаете ли вы с элементами, разделами, пользователями или Highload-блоками, методы add, update и delete и их результаты будут работать одинаково. Это сильно упрощает разработку и делает код чище и предсказуемее.

Bitrix D7 ORM, CRUD, add, update, delete, DataManager, AddResult, UpdateResult, DeleteResult, isSuccess, getErrorMessages.

Мой рейтинг:

Добавить комментарий

Related Post

Валидация данных в D7 ORM: Встроенные и кастомные валидаторыВалидация данных в D7 ORM: Встроенные и кастомные валидаторы

Средний рейтинг Еще нет оценок Валидация — это процесс проверки данных на корректность перед их сохранением. D7 ORM предоставляет мощный механизм валидаторов, который описывается прямо в getMap() вашей сущности. Это позволяет держать

Правильное использование BB кода в 1С-БитриксПравильное использование BB кода в 1С-Битрикс

Средний рейтинг Еще нет оценок В 1С-Битрикс BB код используется для форматирования текста в различных модулях, таких как форумы, задачи, блоги и комментарии. Для его обработки используется класс CTextParser. Вот

Современный Frontend в Битрикс: Система JS-расширений и CJSCore::InitСовременный Frontend в Битрикс: Система JS-расширений и CJSCore::Init

Средний рейтинг 5 из 5 звезд. 1 голосов. Времена хаотичного подключения <script> и <link> тегов в header.php прошли. Современный Битрикс предлагает мощную систему управления frontend-зависимостями — JS-расширения (extensions). Что такое расширение?Это именованный пакет, который может содержать: Зачем