- Is msgphp/eav-bundle compatible with Laravel?
- No. It is a Symfony bundle that relies on Symfony's kernel, DI container, compiler passes, and DoctrineBundle conventions, none of which map to Laravel's service-provider container. Installing it via Composer will not register it in a Laravel app. For Laravel you would need to rewrite or reimplement the EAV domain.
- Can I use msgphp/eav-bundle with Laravel Eloquent?
- Not directly. The bundle is built around Doctrine ORM entities, repositories, and the msgphp domain layer with commands and events, not Eloquent models. You could run Doctrine alongside Eloquent via laravel-doctrine/orm and hand-wire services, but that creates two ORMs, two identity maps, and cross-ORM transaction complexity. The recommended path is to port the EAV concepts to Eloquent, not the bundle.
- How do I install msgphp/eav-bundle in a Laravel project?
- You can run composer require msgphp/eav-bundle, but it will not function as intended. Laravel has no analogue for Symfony Bundle registration or compiler passes, so the bundle's services and Doctrine mappings stay inert. The package also expects the msgphp dependency graph and Symfony 4/5-era constraints that likely conflict with modern Laravel baselines. Treat installation as reference-only, not integration.
- What Laravel and PHP versions does msgphp/eav-bundle support?
- None officially. It is a Symfony bundle with no Laravel support matrix; its constraints are pinned to PHP 7.x-era, Symfony 4/5, and Doctrine ORM 2.x. Laravel 10/11 baselines with PHP 8.2+ and newer Doctrine sit outside its tested range, so transitive conflicts are likely. There is no maintainer triage for Laravel compatibility.
- Does msgphp/eav-bundle require Doctrine ORM and Symfony?
- Yes. The bundle assumes Doctrine ORM entities, mapping, and DoctrineBundle conventions, plus the msgphp/doctrine-bridge and msgphp/eav domain packages. It is not persistence-agnostic in practice. Without Doctrine and Symfony's DI wiring, the bundle contributes almost nothing runnable.
- Is there a Laravel EAV package alternative to msgphp/eav-bundle?
- There is no direct Laravel port of this bundle, so evaluate Laravel-native patterns instead. For a long-tail attribute model, a hybrid of promoted columns plus a JSON column with generated columns or functional indexes covers many needs. If you truly need runtime-defined attributes with filtering, faceting, and aggregation, consider a dedicated EAV table design or an external search index. The bundle is best used as a reference design.
- Can I port msgphp/eav-bundle to Laravel?
- The EAV domain classes are the reusable part, covering attribute and value separation plus repository boundaries, and they are small enough to reimplement. Porting means rebuilding persistence on Eloquent and re-creating validation, typing, tenancy, and i18n behavior yourself. At that point the bundle's Symfony wiring is discarded, so it contributes design inspiration rather than code. Plan for a rewrite, not a bridge.
- Is msgphp/eav-bundle safe for production and actively maintained?
- Not for production planning. It has 0 stars, 0 dependents, and the broader msgphp ecosystem is dormant, with no security triage, version bumps, or issue response. The MIT license is clean, so forking is legally fine, but you inherit maintenance of a multi-package graph. Treat it as abandoned.
- Should I use JSON columns instead of EAV in Laravel?
- Often yes. If the requirement is avoiding migrations rather than truly runtime-defined attributes discovered by tenants or admins, JSON columns with generated columns or functional indexes are simpler and cheaper. EAV is justified when users define attributes at runtime and need to filter, sort, facet, or aggregate on values. Cardinality and query patterns should drive the choice more than the bundle itself.
- How do I test an EAV implementation in Laravel if I port msgphp/eav-bundle?
- Test the Laravel-native implementation you build, not the Symfony bundle. Cover attribute definition, type validation, retyping and deletion behavior, tenant-scoped attributes, and query patterns such as filtering and sorting on values. Use database-level tests for the EAV or JSON schema because index behavior and constraint handling are where regressions appear. The bundle itself offers no Laravel test harness.