unifik/doctrine-behaviors-bundle
A Symfony bundle that adds reusable Doctrine behavior traits such as timestampable, blameable, sluggable, and soft-deletable to your entities, reducing boilerplate and keeping entity mappings clean and consistent across projects.
Architecture fit — low. This is a Symfony2 bundle, not a Laravel package. Its public surface is Symfony-specific: a Bundle class, a DI extension, YAML/XML service definitions, and Doctrine ORM event subscribers registered through the container. Laravel applications run Eloquent as the default ORM and resolve integration through service providers, not bundles. Nothing in this package's composition root is reusable in a Laravel app; only the trait bodies (timestampable, blameable, sluggable, soft-deleteable, translatable, loggable) represent transferable value, and those semantics are already commodity in the Laravel ecosystem.
Integration feasibility — poor as-is, moderate as a spec source. Adopting it verbatim would require running Doctrine ORM inside Laravel (laravel-doctrine/orm or equivalent) and shimming Symfony's bundle/container lifecycle — a bespoke bridge with no upstream support. The realistic path is to treat this repository as a reference implementation of behavior semantics and rebuild them natively. Note that its upstream lineage (knplabs/doctrine-behaviors, gedmo/doctrine-extensions) is far better maintained if the team genuinely commits to Doctrine.
Technical risk — high.
NOASSERTION means GitHub could not map the license file to a known SPDX identifier. That is a procurement and legal blocker until provenance is confirmed; do not vendor code into a commercial product before clearing it.Key questions for the team:
loggable/blameable), i18n (translatable), or just timestamps and soft deletes?Assessment: the opportunity score of 2.08 is consistent with what the repository metadata shows. This is not a dependency to adopt; it is a checklist of behaviors to reimplement.
Stack fit — mismatch by default. In a Laravel codebase the behavior set maps cleanly onto mature, maintained equivalents:
| Behavior | Laravel-native option |
|---|---|
| Timestampable | Eloquent $timestamps (built in) |
| Soft deletes | SoftDeletes trait (built in) |
| Sluggable | cviebrock/eloquent-sluggable |
| Blameable | observer writing auth()->id() on creating/updating |
| Translatable | spatie/laravel-translatable or JSON/companion-table design |
| Loggable / audit | owen-it/laravel-auditing or spatie/laravel-activitylog |
Every row is actively maintained, PHP 8 compatible, and covered by framework-level documentation. That is the integration path.
Migration path. There is no data migration implied, because we are not importing this package — we are importing its requirements. The work is a behavior specification exercise: enumerate desired behaviors, define column contracts and event ordering, then implement against the table above.
Compatibility. If Doctrine is non-negotiable (e.g., an existing domain model being ported), the viable route is doctrine/orm in Laravel plus knplabs/doctrine-behaviors; port the trait logic only where a behavior is genuinely missing upstream. Do not attempt to load the Symfony bundle class. Expect to rewrite service wiring as a Laravel service provider regardless of path.
Sequencing.
LICENSE file; assume restricted until proven otherwise).Total integration effort on the Laravel-native path is measured in days, not weeks. The Doctrine path is a multi-week bridge with a long tail.
Maintenance. Effectively unmaintained. With zero dependents, there is no community to surface breakage or contribute patches; any adoption means the adopting team is the maintainer. On the recommended path (Laravel-native packages), maintenance burden reverts to normal dependency hygiene — Composer updates, occasional major-version bumps.
Support. No vendor, no SLA, no paid tier, GitHub issues only. Internal escalation path must be defined before any code lands. This is a hard blocker for regulated environments where supply-chain provenance is audited.
Scaling. Behavior implementations are event-listener driven, and two of them scale poorly if implemented naively:
Failure modes to design against.
Ramp-up. The real cost is knowledge, not code. Anyone maintaining a Symfony-bundle-derived integration needs Symfony DI and Doctrine event-system fluency — a skill set unlikely to be present or worth cultivating in a Laravel team. The Laravel-native path requires no new competencies: observers, traits, and Eloquent scopes are baseline Laravel. Recommend the native path on ramp-up grounds alone, and treat this repository as documentation of a feature list rather than a dependency.
How can I help you explore Laravel packages today?