Блог Горошко Андрея 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

Создание кастомной страницы в административной панели БитриксСоздание кастомной страницы в административной панели Битрикс

Средний рейтинг 5 из 5 звезд. 1 голосов. Иногда стандартного функционала админки не хватает. Требуется создать страницу для кастомного отчета, дашборда или инструмента управления. Битрикс позволяет легко интегрировать свои страницы

Всплывающие окна в Битрикс: Создание и управление с помощью BX.PopupWindowВсплывающие окна в Битрикс: Создание и управление с помощью BX.PopupWindow

Средний рейтинг Еще нет оценок Всплывающие (модальные) окна — неотъемлемая часть современного интерфейса. Битрикс предоставляет мощный и гибкий JS-класс BX.PopupWindow для их создания и управления. Шаг 1: Базовое создание окна Для создания

Многосайтовость в Битрикс: Как разделить контент и шаблоныМногосайтовость в Битрикс: Как разделить контент и шаблоны

Средний рейтинг Еще нет оценок Многосайтовость — одна из ключевых «фишек» Битрикс. Она позволяет управлять неограниченным количеством сайтов (с разными доменами, шаблонами и контентом) из одной административной панели на базе