mkietlinski/doctrine-extensions
mkietlinski/doctrine-extensions provides reusable Doctrine ORM extensions for PHP projects, helping reduce boilerplate and add common behavior to your Doctrine setup. Install via Composer and integrate with your existing entity manager configuration.
Architecture fit. mkietlinski/doctrine-extensions is a Doctrine ORM behavioral-extensions library — the gedmo/doctrine-extensions / Atlantic18/DoctrineExtensions lineage — providing metadata-driven, event-subscriber behaviors (Timestampable, Sluggable, SoftDeleteable, Blameable, Loggable, Tree, Translatable, Sortable). The critical TPM framing: this is a Doctrine concern, not a Laravel one. Despite the "Laravel-friendly" description, the package only has an integration surface if the application runs Doctrine ORM instead of Eloquent (e.g., via laravel-doctrine/orm). For the majority of Laravel apps — Eloquent-backed — this package is out of scope entirely, and a TPM should screen it out at the stack-fit gate before spending evaluation cycles.
Integration feasibility. MIT-licensed, Composer-installable, no native extensions. Feasibility reduces almost entirely to two questions: (a) is the target app actually Doctrine-backed, and (b) is this fork compatible with the app's doctrine/orm, doctrine/persistence, and PHP runtime? With 0 stars, 0 dependents, no issue history, and no CI evidence, there is zero downstream validation. Treat the code as unaudited third-party source until diffed and reviewed.
Technical risk.
Key questions.
gedmo/doctrine-extensions?doctrine/orm majors are supported, and is there CI evidence?Stack fit. Scope strictly to Doctrine-on-Laravel (via laravel-doctrine/orm) or Symfony projects. Do not retrofit onto an Eloquent codebase — the impedance mismatch (metadata drivers, unit-of-work, flush semantics) exceeds the value of the behaviors. For Eloquent teams, the correct answer is Eloquent-native tooling (casts, observers, Spatie packages), not Doctrine.
Migration path.
gedmo/doctrine-extensions. If the fork adds nothing material, drop it and depend on upstream directly — a TPM should make this the default gate before any engineering time is committed.Timestampable or Sluggable), assert metadata is read correctly, and confirm no ORM version conflicts. Timestampable is the ideal first probe: it only reacts to prePersist/preUpdate and does not change query semantics.SoftDeleteable — highest query-plan impact — only after explicitly testing every repository that touches soft-deleted entities.Translatable, Tree, and Loggable. Each carries disproportionate integration cost (schema surgery, deadlock exposure, write amplification) relative to the others.Compatibility. Confirm the composer.json constraint matrix against your PHP runtime, doctrine/orm, doctrine/persistence, and — if using CLI tree/slug regeneration commands — symfony/console. Cross-check against the already-pinned laravel-doctrine/orm version.
Sequencing. Audit → spike → bounded single-domain enablement → expand behavior-by-behavior with tests → establish an exit ramp (pin to a commit SHA, or vendor the code) before it reaches production. The exit ramp is a planning deliverable, not an afterthought.
Maintenance. Effectively unmaintained by community standards. A TPM must plan for internal ownership: pin the version explicitly in composer.json, monitor upstream releases manually, and budget recurring engineering time to keep the fork aligned with Doctrine releases. Do not rely on composer update to keep this safe.
Support. No community, no issue triage history, no documentation beyond the README. On-call engineers must be Doctrine-literate — this is not a package an Eloquent-native team can debug under incident pressure.
Scaling.
Sluggable and Tree can generate additional queries per operation.Loggable is write-amplifying — plan table growth, retention, and archival before enabling.SoftDeleteable changes every query plan on affected entities; validate with EXPLAIN on high-traffic paths.Tree mutations on hot tables risk deadlocks under concurrent writes.Failure modes.
Ramp-up. Roughly 1–2 days for a Doctrine-literate engineer to read the listeners and behavior configuration; 1–2 weeks to safely roll out a standard behavior set with test coverage and query-plan validation. For an Eloquent-only team, the ramp is not worth the destination.
TPM recommendation. The 4.16 opportunity score almost certainly reflects the category — Doctrine behavioral extensions are genuinely useful and map directly onto recurring product needs (audit/blame for compliance, slugs for SEO, soft deletes for content lifecycle, translatable for i18n, tree for category hierarchies) — not this specific fork. With zero adoption signal and a bus factor of one, the default posture should be evaluate-and-likely-reject in favor of upstream, or use this repo as a read-only reference for implementing a narrow behavior in-house. Adopt only if the diff audit reveals a concrete, needed fix and the team formally accepts internal ownership of the dependency. Do not adopt it for security- or revenue-critical paths.
How can I help you explore Laravel packages today?