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 Set Type Bundle Laravel Package

raksul/doctrine-set-type-bundle

A Symfony bundle that provides a Doctrine DBAL type for MySQL SET columns, enabling entities to map set-valued database fields to PHP arrays and simplifying Doctrine ORM integration for applications that rely on MySQL SET types.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Legacy schema integration: The package allows a Symfony application to map MySQL SET columns to a Doctrine type, so teams can bring an existing MySQL schema under Doctrine entity management without rewriting tables. This unblocks "modernize the app on Doctrine/Symfony" initiatives where changing the schema is too expensive or risky.
  • Build vs. buy: Because the package is small and focused (a Doctrine DBAL type plus Symfony bundle wiring), it serves as a concrete reference point for the build-vs-buy decision. The realistic alternatives are (a) adopt the package, (b) write a ~20–50 line custom Doctrine type in-house, or (c) migrate SET columns to a normalized *_flags join table or JSON column. The decision hinges on whether the team wants an external dependency for something this small.
  • Migration/roadmap sequencing: If the roadmap includes deprecating MySQL SET usage (the SET type is a MySQL-specific, non-portable construct), this package buys time — it lets you freeze legacy columns while new features use normalized types, deferring the schema rewrite to a later milestone.
  • Multi-value flag modeling: Useful for product features stored as bitmask-like flag sets (e.g., notification preferences, feature entitlements, role bundles) where a legacy column already exists and reading/writing via Doctrine keeps the data access consistent with the rest of the domain model.
  • Portability/exit-cost planning: Adopting or rejecting this package feeds directly into a "reduce MySQL-specific coupling" roadmap item, since SET is MySQL-only and would block any future move to PostgreSQL or another RDBMS.

When to Consider This Package

Consider it when:

  • You have an existing MySQL schema with SET columns and a Symfony application using Doctrine ORM, and you need entity mappings for those columns quickly.
  • The columns are read/write in application code (not just reported on), and you need consistent typing rather than raw SQL.
  • You accept a small, low-traffic dependency and are willing to vendor/fork it — treat it as a starting point you own rather than a maintained upstream.
  • Your Doctrine/DBAL/PHP versions are verified compatible. Given the last release was 2023-07-03, confirm compatibility with Doctrine ORM 3 / DBAL 4 and current PHP versions before committing.

Look elsewhere (or build in-house) when:

  • The project is greenfield or you control the schema — model multi-value attributes with a normalized join table or a JSON/array Doctrine type instead. MySQL SET is a legacy construct and blocks database portability.
  • You require active maintenance, security responsiveness, or a support contract. With 0 stars, 0 dependents, and low community signal, there is effectively no community support and limited evidence of ongoing maintenance.
  • The team can accept the small in-house cost: a custom Doctrine type is a low-risk, well-documented extension point and removes the dependency entirely.
  • You need only read access for reporting — a raw SQL/query-builder approach may be simpler than introducing a bundle.
  • You need strict schema-diff/migration tooling behavior across environments; verify doctrine/migrations handles SET columns correctly with this type before relying on it.

How to Pitch It (Stakeholders)

For executives: This is a small, MIT-licensed Symfony bundle that lets our application read and write existing MySQL SET columns through Doctrine, the ORM our PHP stack uses. It is not a platform bet — it's a tactical compatibility shim. The strategic value is that it lets us modernize application code and adopt Doctrine without a risky, schedule-disrupting database migration in the same release. The trade-off is a low-adoption, single-purpose dependency (no meaningful community, last release mid-2023), so the recommendation is to treat it as a starting point we own — vendor it or reimplement it in-house (low effort) — and keep a roadmap item to eliminate MySQL-specific SET columns over time. Net: low cost, contained risk, unblocks a larger modernization effort, and preserves an exit path to database portability.

For engineering: This bundle registers a Doctrine DBAL type so SET columns hydrate into entities as expected and Symfony wires it automatically. It's small enough to audit in an afternoon. Before adoption, verify PHP/Doctrine ORM 3/DBAL 4 compatibility, add tests around round-tripping and schema diffing with doctrine/migrations, and confirm behavior on writes to non-existent set members. If any of that is friction, the fallback is a short custom Type subclass plus a config entry — roughly equivalent effort with no external dependency. Recommendation: prototype against a real SET column, time-box the evaluation, and default to in-house implementation or schema normalization if the package shows any incompatibility.

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.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels