ORM component for the PhpSoftBox framework

Maintainers

Package info

github.com/phpsoftbox/orm

pkg:composer/phpsoftbox/orm

Statistics

Installs: 72

Dependents: 3

Suggesters: 0

Stars: 0

Open Issues: 0

dev-master 2026-03-05 11:41 UTC

This package is auto-updated.

Last update: 2026-03-05 11:41:58 UTC


README

ORM компонент для PhpSoftBox. Работает поверх phpsoftbox/database.

Статус: beta

Рекомендации по работе с ORM

Ниже — практики, которые мы используем в проекте и на которые опирается код:

  1. Entity — источник правды. Репозитории возвращают сущности (?Entity, EntityCollection), а не массивы.
  2. create() возвращает Entity. Проверки id <= 0 не нужны — ORM кидает исключение, если id не назначен.
  3. Репозиторий без бизнес‑логики. Правила, валидация и ошибки — в сервисах.
  4. Использовать relations вместо join, когда возможно. with()/whereHas() предпочтительнее ручного join.
  5. Прямой доступ к connection() — только там, где ORM не покрывает кейс.
    Типовые случаи: bulk‑операции, pivot‑таблицы, служебные массовые апдейты.
  6. Входные данные должны быть нормализованы до репозитория.
    RequestSchema/DTO/сервис формируют payload; репозиторий только применяет его к сущности.
  7. Контроллеры возвращают Resource, а не массивы.
    Resource::collection() для списков, new Resource($entity) для единичных.
  8. Жизненный цикл — через EntityManager.
    persist/flush на сущности, не смешивать с ручным SQL без крайней нужды.
  9. Транзакции — в сервисах.
    Если операция затрагивает несколько репозиториев, управляет сервис.

Оглавление

Quick Start

См. docs/01-quick-start.md.