kwattro/neo4j-ogm-bundle
Symfony bundle integrating Neo4j OGM so you can map PHP objects to graph nodes and relationships, manage entities through an object graph mapper, and use Neo4j in Symfony apps with bundle configuration and service integration.
Architecture fit
kwattro/neo4j-ogm-bundle is a Symfony bundle (Bundle suffix, AppKernel registration, DI Extension class, services.xml). It has no ServiceProvider, no config/*.php publishable config, and no Laravel facade. Nothing in it is designed to be booted by Laravel's container.Model events, or Laravel's query builder.Integration feasibility — low
symfony/symfony or symfony/dependency-injection at ~2.x, which conflicts directly with Laravel 9/10/11 (Symfony 6/7 components). Expect composer require to fail outright, or to force a dependency downgrade that breaks the framework.each(), non-nullable signatures) are likely to emit deprecations or fatal at runtime on 8.1+.EntityManager in a Laravel service provider or a small adapter class.Technical risk — high
Key questions
graphaware/neo4j-php-ogm, or laudis/neo4j-php-client with hand-written mapping)?Verdict: Do not adopt as a Laravel dependency. Score 0.345 is consistent with the evidence: an ecosystem-mismatched, abandoned, pre-PHP-8 wrapper. Treat it as a reference implementation for OGM design ideas only.
Stack fit
laudis/neo4j-php-client (Bolt, PHP 8, actively maintained) wrapped in a small internal repository/mapper layer. That preserves the OGM ergonomics (entities in, entities out, unit-of-work at the edges) without inheriting the Symfony coupling or the REST-era protocol.graphaware/neo4j-php-ogm is the lineage-successor of this bundle's underlying library and is the only defensible starting point — still subject to its own PHP 8 and Neo4j 5 vetting.Migration path (if pursued at all)
Neo4jServiceProvider that bootstraps the OGM EntityManager and binds it as a singleton — roughly 50–100 lines. That is the only part of the bundle you actually need.GraphRepository contract in the domain layer; the OGM implementation is one adapter. This makes a later swap to laudis/neo4j-php-client a contained change rather than a rewrite.Compatibility
symfony/property-access / doctrine/annotations at versions Laravel already pins.USE/database-scoped sessions) is required. This library predates multi-database and will not express it.Sequencing Spike → go/no-go → interface design → adapter implementation → feature work. Never sequence this as "install the bundle, then discover". The composer install is the cheapest possible test and it should happen on day one, before any estimation.
Maintenance
Support
Scaling
EntityManager must be reset (or the worker killed) per job or per request. Plan for a clear() in a terminating callback, and load-test to confirm.Failure modes
flush() calls. Any multi-step write needs explicit verification.Ramp-up
Bottom line for the roadmap: the expected value of this package is negative unless a graph store is a hard, validated requirement. Spend the spike on confirming the requirement first; if graph is required, adopt a maintained Bolt client behind an internal interface and treat this bundle as design reference only.
How can I help you explore Laravel packages today?