Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Doctrine Extensions Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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.

  • Fork opacity. This appears to be a maintained fork of a widely-used upstream. The single most important technical question is why the fork exists — what it adds, fixes, or diverges on. Without a diff, you inherit unknown behavioral deltas.
  • Internal-API coupling. Doctrine extensions rely on event listeners and metadata drivers that shift materially between ORM 2.x (annotations) and 3.x (attributes). Forks lag major bumps, and an ORM upgrade can silently break listeners.
  • Behavioral correctness risk dominates security risk. No network I/O, no credential handling — but soft-delete filters, translatable fallbacks, and tree mutations can silently alter query results. This is a class of bug that surfaces in production data, not in unit tests.
  • Bus factor of one. No community, no triage history, no support channel.

Key questions.

  1. Is the target application actually Doctrine-backed, or is this an Eloquent app looking for a soft-delete/sluggable shortcut? (If Eloquent — stop here.)
  2. What does this fork change relative to gedmo/doctrine-extensions?
  3. Which PHP and doctrine/orm majors are supported, and is there CI evidence?
  4. Which subset of behaviors is genuinely needed — and can that subset be implemented in-house for less than the cost of adoption?
  5. Who inside the organization owns this dependency if the maintainer goes silent?

Integration Approach

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.

  1. Diff audit. Clone the repo and diff against upstream 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.
  2. Time-boxed spike. Install on a branch, enable only the lowest-risk behavior (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.
  3. Bounded single-domain enablement. Roll one behavior into one domain area with integration tests before expanding.
  4. Stage roll-out of SoftDeleteable — highest query-plan impact — only after explicitly testing every repository that touches soft-deleted entities.
  5. Defer 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.

Operational Impact

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.

  • Event listeners add per-flush overhead; 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.

  • ORM major-version bump silently breaking listeners.
  • Metadata driver misconfiguration causing behaviors to no-op without error.
  • Soft-delete filters excluding records from counts, reports, or joins.
  • Translatable fallback returning null instead of the default locale.
  • Slug collision under concurrency (uniqueness enforced only at the application layer).
  • Fork drift making a future migration back to upstream non-trivial.

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console