bitrix-toolkit/bitrix-entity-mapper
最新稳定版本:v2.0
Composer 安装命令:
composer require bitrix-toolkit/bitrix-entity-mapper
包简介
Alternative ORM for Bitrix
README 文档
README
Декларативный ORM для инфоблоков Bitrix.
Установка
composer require bitrix-toolkit/bitrix-entity-mapper
Быстрый старт
Описываем с помощью PHPDoc аннотаций способ хранения объектов в Bitrix:
<?php use BitrixToolkit\BitrixEntityMapper\Annotation\Entity\InfoBlock; use BitrixToolkit\BitrixEntityMapper\Annotation\Property\Field; use BitrixToolkit\BitrixEntityMapper\Annotation\Property\Property; /** * @InfoBlock(type="library", code="books", name="Книги") */ class Book { /** * @Field(code="ID", primaryKey=true) */ public $id; /** * @Field(code="ACTIVE") */ public $active = true; /** * @Field(code="NAME") */ public $title; /** * @Property(code="author", type="string", name="Автор") */ public $author; /** * @var DateTime|null * @Property(code="published_at", type="datetime", name="Дата публикации") */ public $publishedAt; }
Подключаем Bitrix, модуль iblock и автолоадинг Composer:
require 'bitrix/modules/main/include/prolog_before.php'; require 'vendor/autoload.php'; CModule::IncludeModule('iblock');
Вручную нужно создать только тип инфоблока. Остальные миграции может выполнить SchemaBuilder.
Метод SchemaBuilder::build($entityMap) запускает автоматические миграции, которые
создадут или изменят необходимый инфоблок и свойства инфоблока для сущности:
use BitrixToolkit\BitrixEntityMapper\SchemaBuilder; use BitrixToolkit\BitrixEntityMapper\Map\EntityMap; use Entity\Book; $entityMap = EntityMap::fromClass(Book::class); SchemaBuilder::build($entityMap);
Сохраняем новый объект:
use BitrixToolkit\BitrixEntityMapper\EntityMapper; use Entity\Book; $book = new Book(); $book->active = true; $book->title = 'Остров сокровищ'; $book->author = 'Р. Л. Стивенсон'; $book->publishedAt = new DateTime('1883-06-14 00:00:00'); $bitrixId = EntityMapper::save($book);
Есть несколько способов перебрать результат:
use BitrixToolkit\BitrixEntityMapper\EntityMapper; use Entity\Book; $query = EntityMapper::select(Book::class)->where('author', 'Р. Л. Стивенсон'); // Получить один результат. $query->fetch(); // Перебрать по одному результату. while ($book = $query->fetch()) { /* ... */ } // Использовать реализованную имплементацию интерфейса Iterator. foreach ($query as $book) { /* ... */ } // Использовать метод возвращающий генератор. foreach ($query->iterator() as $book) { /* ... */ } // Получить массив со всеми результатами. // Не рекомендуется! Небезопасное потребление памяти. $query->fetchAll();
Получаем результат по фильтру сущности:
use BitrixToolkit\BitrixEntityMapper\EntityMapper; use Entity\Book; /** @var Book|null $book */ $book = EntityMapper::select(Book::class)->where('title', 'Остров сокровищ')->fetch(); /** @var Book[] $books */ $books = EntityMapper::select(Book::class)->where('author', '%', 'Стивенсон')->fetchAll(); /** @var Book[] $books */ $books = EntityMapper::select(Book::class)->where('publishedAt', '<', '01.01.1900')->fetchAll();
Получаем результат по фильтру Bitrix:
use BitrixToolkit\BitrixEntityMapper\EntityMapper; use Entity\Book; /** @var Book|null $book */ $book = EntityMapper::select(Book::class)->whereRaw('ID', 1)->fetch(); /** @var Book[] $books */ $books = EntityMapper::select(Book::class)->whereRaw('ACTIVE', 'Y')->fetchAll();
Сортируем выборку:
use BitrixToolkit\BitrixEntityMapper\EntityMapper; use Entity\Book; /** @var Book|null $book */ $book = EntityMapper::select(Book::class)->orderBy('publishedAt', 'desc')->fetch();
Обновляем существующий объект:
use BitrixToolkit\BitrixEntityMapper\EntityMapper; use Entity\Book; /** @var Book|null $existBook */ $existBook = EntityMapper::select(Book::class)->fetch(); if ($existBook) { $existBook->title = 'Забытая книга'; $existBook->author = 'Неизвестный автор'; $existBook->publishedAt = null; $existBook->active = false; $updatedBitrixId = EntityMapper::save($existBook); }
bitrix-toolkit/bitrix-entity-mapper 适用场景与选型建议
bitrix-toolkit/bitrix-entity-mapper 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1 次下载、GitHub Stars 达 3, 最近一次更新时间为 2024 年 09 月 30 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 bitrix-toolkit/bitrix-entity-mapper 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 bitrix-toolkit/bitrix-entity-mapper 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 1
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 8
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Unlicense
- 更新时间: 2024-09-30