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 Crud Laravel Package

mukadi/doctrine-crud

mukadi/doctrine-crud is a lightweight CRUD package for Doctrine ORM entities, helping Laravel and PHP developers create, read, update, and delete records through a simple, configurable API that cuts boilerplate and keeps persistence code organized.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The package advertises itself as Laravel-friendly CRUD for Doctrine entities, but the evidence points to a Symfony-first heritage (mukadi namespace, author publishes Symfony bundles, no service provider, no config, no facade). Treat the "Laravel" framing as unvalidated marketing until the source proves otherwise.
  • Doctrine is a Data Mapper; Laravel's default is Eloquent/Active Record. Adopting this package only makes sense if the team has already committed to Doctrine-in-Laravel (typically laravel-doctrine/orm inherited from a Symfony migration or a DDD-flavored codebase). The package does not bridge that gap; it assumes it's already closed.
  • Fit is realistic only for internal, low-blast-radius tooling — admin screens, ops dashboards, backfill utilities — where a thin CRUD helper materially shortens delivery. It is not a platform decision.

Integration feasibility

  • Composer-installable, but "feasible" ends there. There is no service provider, no publishable config, no route registration in Laravel's idiom, and effectively no documentation beyond a README. Integration is bespoke glue code your team owns.
  • The critical unknown is scope: does the helper produce controller actions, forms, or both, and does it assume Symfony's Request/Response? That single answer decides whether this is a one-day adapter or a rewrite.
  • Mass-assignment and validation are the sharp edges. A "simple CRUD helper" that writes request payloads directly to entities is a security liability unless every field is gated explicitly. This must be verified in source before any commitment.

Technical risk — rated High

Risk Severity Rationale
Abandonment High 1 star, 0 dependents, no downstream validation
Bus factor High Single maintainer, no contributor base
Compatibility drift High Doctrine ORM 2.x → 3.x is a breaking change; no signal on support
Security response High No community to surface or patch CVEs
Unknown API surface Medium Documentation limited to a README; source is the spec

A 0.035 score with zero dependents means no one else is running this in production. You would be first. That does not disqualify a small utility, but it changes the review burden from "evaluate" to "audit and adopt."

Key questions to resolve before commitment

  1. Does the helper generate controllers, generate forms, or both? Does it assume Symfony's HTTP kernel?
  2. Which doctrine/orm and PHP versions are supported? Is there a CI matrix?
  3. Is there a test suite, and does it cover create/read/update/delete and failure paths?
  4. What is the license, and is there a security disclosure path?
  5. Does the helper write request input directly to entities (mass-assignment exposure)?
  6. Last commit date and issue responsiveness — maintained or parked?
  7. Is the true need covered by a maintained alternative (Eloquent resource controllers, Filament, Nova, Backpack, or API Platform)?

Integration Approach

Stack fit

  • Greenfield Laravel (Eloquent): do not integrate. Adopting Doctrine purely to consume this helper costs far more than writing CRUD with Eloquent or a resource controller.
  • Laravel already running Doctrine (laravel-doctrine/orm): proceed to a fork-first spike. This is the only scenario where the package earns its keep.
  • Standard Symfony or Doctrine-native app: the package is more plausible, but that's outside this assessment's scope.

Migration path (assuming Doctrine-in-Laravel)

  1. Spike (1 week, non-production branch). Install, read src/ end-to-end, and produce a one-page API surface map. Confirm Doctrine/PHP constraint compatibility against your composer.lock.
  2. Fork and pin. Vendor the fork under your org, pin to a commit, wire as a path or VCS repository. Never consume upstream dev-main.
  3. Adapter layer. Introduce a service provider plus an explicit gateway between the helper and Laravel's request/validation/auth/middleware stack. Controllers call the adapter; they never call the helper directly.
  4. Characterization tests on every entity the helper touches — create, read, update, delete, plus missing-entity, invalid-payload, and unauthorized-access paths.
  5. Rollout behind a feature flag on one low-risk administrative entity before broadening.

Compatibility

  • Verify doctrine/orm constraint against your installed major. Doctrine 3 removed AnnotationDriver defaults and changed several APIs; a helper written against 2.x may load but misbehave.
  • Doctrine needs its own connection/entity-manager configuration separate from Laravel's DB facade. Confirm both coexist without duplicate connection pools.
  • If you run Octane or long-lived workers, audit the entity manager lifecycle — a stale identity map is a common source of subtle data bugs.

Sequencing / fallback

  • Budget the fallback explicitly: write the CRUD yourself. A Laravel resource controller plus FormRequests for a handful of entities is roughly 1–2 days of work with zero supply-chain risk. If the spike shows the helper saves less than that, stop and hand-roll it.

Operational Impact

Maintenance

  • You must assume ownership of the fork. With one star, one maintainer, and zero dependents, upstream will not absorb patches or respond to bug reports. Every Doctrine/PHP bump is your team's responsibility to validate.
  • Doctrine major upgrades become a recurring mini-project, not a routine composer update. Plan an annual compatibility review.

Support

  • No community, no vendor, no SLA, no Stack Overflow corpus. Internal knowledge concentration is the real risk: if the one engineer who understands the helper leaves, the codebase becomes opaque.
  • Mitigate with written runbooks, the API surface map as a lasting artifact, and the characterization tests from the integration phase.

Scaling

  • The helper is thin glue, not the bottleneck. Scaling characteristics are inherited from Doctrine: unit-of-work flush cost, identity-map memory growth, hydration overhead on large result sets, and N+1 from lazy association loading.
  • For read-heavy endpoints, bypass the helper and use DQL projections or a read model. Do not let the helper's convenience dictate query shape.
  • Under Octane/FrankenPHP, reset the entity manager per request. The helper will not warn you about this.

Failure modes

  1. Silent breakage on upgrade — a Doctrine or PHP release changes behavior; no upstream test suite catches it.
  2. Unpatched vulnerability — mass-assignment or query-construction flaw with no maintainer to ship a fix; your fork is the only mitigation.
  3. Middleware bypass — helper-generated endpoints that skip auth, rate limiting, or CSRF, producing an unprotected write surface.
  4. Data integrity — partial flushes, missing transaction boundaries, or mishandled relations producing orphaned records.
  5. Knowledge loss — the sole integrator departs.

Ramp-up

  • The code surface is small, but productive use requires Doctrine fluency (entity mapping, DQL, lifecycle events, flush semantics) that is uncommon on Laravel teams. Estimate 2–4 weeks for a mid-level Laravel developer to become genuinely productive, on top of the 1-week spike.
  • Compare directly against the Eloquent alternative at roughly 1–2 days. The ramp-up cost alone likely exceeds the entire value the helper provides.

Verdict: Not recommended for a standard Laravel stack. Consider only for an existing Doctrine-in-Laravel codebase, and then only under a fork with characterization tests, an adapter layer, a documented fallback to hand-written CRUD, and explicit stakeholder acknowledgement that this is a fork-and-own decision — not a dependency you inherit.

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.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle