WordPress DemoSite

Тестовый сайт для экспериментов и демонстраций возможностей

ORM и D7 в Bitrix24 и 1С-Битрикс

В Bitrix24 и 1С-Битрикс существуют два основных подхода к работе с базой данных: старая ORM и D7 (DataManager). Разберём их различия.


1. Старая ORM (до D7)

Использовалась в старых версиях Битрикс (до версии 15+).
Особенности:

Пример:

$user = CUser::GetByID(1)->Fetch();
$iblockElements = CIBlockElement::GetList([], ["IBLOCK_ID" => 1]);
while ($element = $iblockElements->Fetch()) {
    // обработка элемента
}

2. D7 (DataManager)

Введён в Битрикс D7 (ядро версии 15+).
Особенности:

Пример:

use Bitrix\Main\Entity;

// Определение сущности (если не используется автогенерация)
class UserTable extends Entity\DataManager
{
    public static function getTableName()
    {
        return 'b_user';
    }

    public static function getMap()
    {
        return [
            new Entity\IntegerField('ID', ['primary' => true]),
            new Entity\StringField('LOGIN'),
            new Entity\StringField('EMAIL'),
        ];
    }
}

// Запрос к базе
$user = UserTable::getById(1)->fetch();
$query = UserTable::query()
    ->setSelect(['ID', 'LOGIN'])
    ->setFilter(['ACTIVE' => 'Y'])
    ->setLimit(10);
$users = $query->fetchAll();

Сравнение ORM и D7

КритерийСтарая ORMD7 (DataManager)
СинтаксисПростой, но устаревшийСовременный, OOP
ПроизводительностьНижеВыше (кеширование, оптимизация)
ТипизацияНет (массивы)Есть (объекты)
Сложные запросыОграниченыПолная поддержка (JOIN, подзапросы)
ТранзакцииНетЕсть (Bitrix\Main\DB\Connection)
АвтогенерацияНетЕсть (Entity\Base)
ПоддержкаУстареваетАктуальная

Вывод

Если вы начинаете новый проект на Битрикс — используйте D7.

Полный стэк: .NET | AMQP | Android | api | Bash | Bootstrap | C++ | cms | Composer | css | Data | Elasticsearch | ESP32 | Git | GraphQL | Gulp | JavaScript | JetStream | Joomla | js | Kotlin | Laravel | LEMP | Linux | LMS | Markdown | MODX | Moodle | MySQL | NATS | Nginx | Node.js | OpenCart | Parsedown | PHP | Python | RabbitMQ | SCSS | SEO | Simpla | SOAP | SQL | startup | Swift | Symfony | Tailwind | Translation | Twig | Ubuntu | Unit | web3 | Webasyst | Webpack | WebSocket | WordPress | XML | Бизнес | блокчейн | ИИ | интернет-магазин | ЛК | Руководство | ТЗ | фреймворк | Яндекс.Трекер