phpsoftbox / orm
ORM component for the PhpSoftBox framework
dev-master
2026-03-05 11:41 UTC
Requires
- php: ^8.4
- phpsoftbox/clock: dev-master
- phpsoftbox/collection: dev-master
- phpsoftbox/database: dev-master
- phpsoftbox/encryptor: dev-master
- phpsoftbox/inflector: dev-master
- ramsey/uuid: ^4.7
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.93
- phpsoftbox/cli-app: dev-master
- phpsoftbox/cs-fixer: ^1.1.0
- phpsoftbox/storage: dev-master
- phpsoftbox/validator: dev-master
- phpunit/phpunit: ^11.2
This package is auto-updated.
Last update: 2026-03-05 11:41:58 UTC
README
ORM компонент для PhpSoftBox. Работает поверх phpsoftbox/database.
Статус: beta
Рекомендации по работе с ORM
Ниже — практики, которые мы используем в проекте и на которые опирается код:
- Entity — источник правды. Репозитории возвращают сущности (
?Entity,EntityCollection), а не массивы. create()возвращает Entity. Проверкиid <= 0не нужны — ORM кидает исключение, если id не назначен.- Репозиторий без бизнес‑логики. Правила, валидация и ошибки — в сервисах.
- Использовать relations вместо join, когда возможно.
with()/whereHas()предпочтительнее ручного join. - Прямой доступ к
connection()— только там, где ORM не покрывает кейс.
Типовые случаи: bulk‑операции, pivot‑таблицы, служебные массовые апдейты. - Входные данные должны быть нормализованы до репозитория.
RequestSchema/DTO/сервис формируют payload; репозиторий только применяет его к сущности. - Контроллеры возвращают Resource, а не массивы.
Resource::collection()для списков,new Resource($entity)для единичных. - Жизненный цикл — через
EntityManager.
persist/flushна сущности, не смешивать с ручным SQL без крайней нужды. - Транзакции — в сервисах.
Если операция затрагивает несколько репозиториев, управляет сервис.
Оглавление
- Quick Start
- Атрибуты и метаданные
- Репозитории и EntityManager
- TypeCasting
- Behaviors, события и DI
- Relations (связи)
- Pivot Entity