Блог Горошко Андрея 1C-Битрикс Работа с объектами D7 ORM: fetchObject, save() и коллекции fetchCollection

Работа с объектами D7 ORM: fetchObject, save() и коллекции fetchCollection

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

Метод getList в D7 ORM по умолчанию возвращает массив данных (fetch()). Но вся мощь ORM раскрывается при работе с объектами. Это делает код более строгим, читаемым и защищенным от ошибок, благодаря автодополнению в IDE.

Получение одного объекта: fetchObject()

Вместо fetch(), который возвращает ассоциативный массив, используйте fetchObject(). Он вернет экземпляр типизированного объекта вашей сущности.

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

Loader::includeModule('iblock');

$elementObject = ElementTable::getList([
    'select' => ['ID', 'NAME', 'ACTIVE'],
    'filter' => ['=ID' => 123]
])->fetchObject();

if ($elementObject) {
    // Работаем с объектом через геттеры и сеттеры
    echo "Название: " . $elementObject->getName(); // ->getName() вместо ['NAME']

    // Изменяем данные
    $elementObject->setName("Новое название объекта");
    $elementObject->setActive("N");

    // Сохраняем изменения в базу
    $result = $elementObject->save();

    if ($result->isSuccess()) {
        echo "Объект успешно сохранен!";
    } else {
        print_r($result->getErrorMessages());
    }
}

Преимущества объектов:

  1. Типизация: IDE подсказывает доступные методы (getName, setName и т.д.).
  2. Инкапсуляция: Логика работы с полями скрыта внутри объекта.
  3. Состояние: Объект «знает», был ли он изменен, и сохраняет только то, что нужно.

Получение коллекции объектов: fetchCollection()

Если вам нужно получить несколько записей, используйте fetchCollection(). Этот метод возвращает специальный объект-коллекцию, который можно перебирать в цикле foreach, как обычный массив, но с дополнительными возможностями.

use Bitrix\Iblock\ElementTable;

$elementCollection = ElementTable::getList([
    'select' => ['ID', 'NAME'],
    'filter' => ['=IBLOCK_ID' => 5, '=ACTIVE' => 'Y'],
    'limit' => 10
])->fetchCollection();

// Перебираем коллекцию объектов
foreach ($elementCollection as $elementObject) {
    echo $elementObject->getName() . "<br>";

    // Можно также изменять и сохранять каждый объект
    // $elementObject->setName(...);
    // $elementObject->save();
}

// Коллекции предоставляют удобные методы
$idList = $elementCollection->getIdList(); // Получить массив всех ID
print_r($idList);

Преимущества коллекций:
*   Содержат только объекты одного типа.
*   Предоставляют удобные "хелперы" (`getIdList`, `getNameList` и т.д.).
*   Позволяют выполнять групповые операции (например, `fill` для дозагрузки данных).


Создание нового объекта

Новый объект можно создать, а затем заполнить и сохранить.

use Bitrix\Iblock\ElementTable;

// 1. Создаем пустой объект
$newElement = ElementTable::createObject();

// 2. Заполняем поля
$newElement->setIblockId(5);
$newElement->setName('Новый объектный элемент');
$newElement->setActive('Y');
$newElement->setCode('new-object-element');

// 3. Сохраняем
$result = $newElement->save();

if ($result->isSuccess()) {
    echo "Создан элемент с ID: " . $result->getId();
} else {
    print_r($result->getErrorMessages());
}

Вывод:
Работа через fetchObject и fetchCollection — это следующий шаг в освоении D7 ORM. Она переводит вашу разработку с уровня процедурной работы с массивами на полноценный объектно-ориентированный подход, делая код более надежным, предсказуемым и профессиональным.

Bitrix D7 ORM, fetchObject, fetchCollection, ORM объекты, ORM коллекции, save(), типизация, современная разработка Битрикс.

Мой рейтинг:

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

Related Post

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

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

Отладка производительности в Битрикс: Монитор производительности и отладка SQLОтладка производительности в Битрикс: Монитор производительности и отладка SQL

Средний рейтинг Еще нет оценок Медленная работа сайта — частая проблема, и её решение начинается с правильной диагностики. В Битрикс есть мощные встроенные инструменты, которые помогают найти причину низкой производительности,

Управление правами доступа через API: GetGroupRight, GetUserGroupArrayУправление правами доступа через API: GetGroupRight, GetUserGroupArray

Средний рейтинг Еще нет оценок Проверка прав доступа — критически важная часть любого веб-приложения. Она позволяет скрывать или показывать определенные кнопки, блокировать доступ к страницам или разрешать выполнение специфических действий.