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

okapon/doctrine-set-type-bundle

Symfony bundle that adds a Doctrine DBAL type for MySQL SET columns, letting you map SET fields to PHP arrays instead of comma-separated strings. Includes schema support and simple configuration for legacy or MySQL-specific databases that rely on SET values.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

  • Architecture fit: Poor for a Laravel-first codebase. This is a Symfony bundle that registers a Doctrine DBAL custom type for MySQL SET; it assumes Symfony DI, bundle bootstrapping, and Doctrine2 ORM. Laravel’s default persistence is Eloquent, and even Laravel Doctrine integrations do not consume Symfony bundles directly.
  • Integration feasibility: Low without glue code. A team could install Doctrine via laravel-doctrine/orm, but this bundle would still need a Laravel service provider or a fork that registers the DBAL type manually. The useful core is small—the SET type mapping—so reimplementing it as an application-level Doctrine type or Eloquent cast is likely simpler than integrating the bundle.
  • Technical risk: High. Last release was 2017, targeting Doctrine2/Symfony 2–3 era APIs. It has 11 stars, 0 dependents, and no recent community validation. Modern Laravel/PHP stacks use DBAL 3/4 and PHP 8.x, where the bundle’s service wiring and type APIs are likely incompatible. MySQL SET is also a legacy, MySQL-specific column type with limited portability.
  • Key questions: Is MySQL SET truly required, or can the data be modeled as JSON, a normalized join table, ENUM, or a bitmask? Are we already using Doctrine in Laravel, or is this an Eloquent product? Which Doctrine DBAL/PHP versions must be supported? Can we own a small custom type instead of a stale bundle? What is the migration cost if we replace SET later?

Integration Approach

  • Stack fit: Misaligned. The package is Symfony/Doctrine-native, not Laravel-native. In Laravel, SET columns can be created via raw migrations, but Eloquent has no first-class SET cast; a custom cast or accessor/mutator would be needed. If using Doctrine in Laravel, register a custom DBAL type directly rather than adopting a Symfony bundle.
  • Migration path: Avoid the bundle as the integration target. If the schema already uses SET, first assess whether it can be migrated to JSON or a normalized model. If SET must remain, implement a small custom Doctrine DBAL type in application code or an Eloquent custom cast, with explicit tests for read/write, schema introspection, and migrations. Fork the bundle only if its type logic is reused, then strip Symfony-specific configuration.
  • Compatibility: Expect incompatibility with current Laravel. The bundle’s Doctrine2 assumptions are unlikely to match DBAL 3/4 type registration, and Symfony bundle bootstrapping will not run in Laravel. PHP 8.x compatibility is unverified. Any reuse requires version pinning, a compatibility spike, and likely a maintained fork.
  • Sequencing: 1) Confirm whether SET is a hard requirement. 2) Prototype a custom DBAL type or Eloquent cast in a branch. 3) Validate MySQL SET behavior: storage, ordering, strict mode, schema diff, and query patterns. 4) If adopting the bundle, fork and replace Symfony wiring with a Laravel service provider. 5) Plan data migration if moving away from SET. 6) Deprecate the bundle dependency once the custom type is stable.

Operational Impact

  • Maintenance: The package is effectively abandoned. A TPM should assume ownership of any fork, including DBAL API updates, PHP version bumps, and security patches. MIT licensing permits this, but 0 dependents means little external testing or upstream support.
  • Support: No vendor or active community support. Internal documentation and runbooks would be required for the custom type, schema changes, and hydration behavior. On-call engineers must understand both Doctrine type registration and MySQL SET semantics.
  • Scaling: SET is a bitmask limited to 64 distinct values and is not portable across databases. Queries using FIND_IN_SET are generally non-sargable and can become a performance bottleneck. A normalized join table or JSON column scales better for evolving multi-value attributes.
  • Failure modes: DBAL version mismatch can break type registration; Symfony bundle bootstrapping will fail in Laravel; schema diff/migrations may mis-handle SET; strict SQL mode can reject invalid values; ordering and truncation semantics can cause silent data issues; hydration may return unexpected strings or arrays.
  • Ramp-up: High for teams without Doctrine-in-Laravel experience and Symfony bundle internals. If Eloquent is the primary ORM, a custom cast approach has lower ramp-up but still requires MySQL SET expertise. A TPM should budget a short spike and likely recommend avoiding the bundle in favor of a small, owned integration or a schema redesign.
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