https://github.com/bitrix-toolkit/bitrix-entity-mapper
Декларативный ORM для инфоблоков Bitrix.
https://github.com/bitrix-toolkit/bitrix-entity-mapper
bitrix orm php
Last synced: 4 months ago
JSON representation
Декларативный ORM для инфоблоков Bitrix.
- Host: GitHub
- URL: https://github.com/bitrix-toolkit/bitrix-entity-mapper
- Owner: bitrix-toolkit
- License: unlicense
- Created: 2019-04-11T11:02:23.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-12-10T08:43:31.000Z (over 1 year ago)
- Last Synced: 2025-04-21T13:46:00.693Z (about 1 year ago)
- Topics: bitrix, orm, php
- Language: PHP
- Homepage: https://bitrix-toolkit.github.io/bitrix-entity-mapper/
- Size: 866 KB
- Stars: 4
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Bitrix Entity Mapper
[](https://github.com/bitrix-toolkit/bitrix-entity-mapper/actions/workflows/php-unit.yml)
[](https://scrutinizer-ci.com/g/bitrix-toolkit/bitrix-entity-mapper/?branch=master)
[](https://scrutinizer-ci.com/g/bitrix-toolkit/bitrix-entity-mapper/?branch=master)
Декларативный ORM для инфоблоков Bitrix.
## Установка
```bash
composer require bitrix-toolkit/bitrix-entity-mapper
```
## Быстрый старт
Описываем с помощью PHPDoc аннотаций способ хранения объектов в Bitrix:
```php
active = true;
$book->title = 'Остров сокровищ';
$book->author = 'Р. Л. Стивенсон';
$book->publishedAt = new DateTime('1883-06-14 00:00:00');
$bitrixId = EntityMapper::save($book);
```
Есть несколько способов перебрать результат:
```php
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();
```
Получаем результат по фильтру сущности:
```php
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:
```php
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();
```
Сортируем выборку:
```php
use BitrixToolkit\BitrixEntityMapper\EntityMapper;
use Entity\Book;
/** @var Book|null $book */
$book = EntityMapper::select(Book::class)->orderBy('publishedAt', 'desc')->fetch();
```
Обновляем существующий объект:
```php
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);
}
```