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

Neo4J Php Client Laravel Package

plumtreesystems/neo4j-php-client

A PHP client for Neo4j graph databases with Bolt and HTTP connections, transaction support, flexible result handling, and an expressive query API. Works well in PHP and Laravel applications that need reliable graph database access.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What we know: The only artifact available is the 5.0.0 release note: "support for Neo4j 3.5+ and 4.0." No prior assessment, no composer metadata, no changelog, no dependency manifest was supplied. This assessment is therefore directional and must be validated before any commitment. Two facts are nonetheless load-bearing:

  1. The package sits between Laravel and Neo4j, a graph database — not a conventional relational store. That changes the architecture conversation materially versus a typical Laravel package (cache driver, queue backend, auth provider).
  2. A major version bump (5.0.0) is, by semver convention, a breaking-change signal. The release note describes only expanded database-version support; that is almost certainly not the whole story. Treat the note as incomplete, not as a summary.

Architecture fit. A graph layer is a strong fit where the domain is genuinely relational in the network sense — access control / authorization graphs, entity resolution, recommendations, lineage, fraud rings, dependency and bill-of-materials modeling. It is a poor fit when the motivation is "our JOINs are slow." Graph databases trade join performance for traversal performance; they impose a second data model, a second query language (Cypher), and a second consistency boundary. The Laravel fit itself is plausible: packages of this class typically register a service provider, publish a config file, and expose a facade or connection manager. The real question is depth — whether it wraps only the Bolt driver or offers an Eloquent-like OGM with model hydration, relationships, and lifecycle hooks. Those two outcomes carry very different integration and migration costs.

Integration feasibility. Moderate. The Laravel side is usually straightforward (composer require, config publish, env vars, service provider registration). The Neo4j side requires provisioning a separate datastore — a new cluster, new backup regime, new monitoring, new access-control model, and a Cypher-proficient skill set. The hard edge is dual-write: if this package is introduced alongside an existing MySQL/Postgres system of record, there is no two-phase commit between the two, and the team inherits an eventual-consistency and reconciliation problem that outlives the package itself.

Technical risk.

  • Version currency (highest). Supporting Neo4j 3.5+ and 4.0 is a notable concern. 3.5 has been end-of-life for years; 4.0 is likewise well past its support window. If the package's ceiling is 4.x, adopting it means pinning to an unsupported database — a security and patching liability. If it merely adds 4.0 alongside 5.x support, the risk drops substantially. This distinction alone determines whether the package is viable.
  • Breaking changes. A 5.0.0 with a one-line note implies undocumented migration work. We cannot scope an upgrade or a greenfield build without the changelog and the previous major's requirements.
  • Runtime matrix. PHP and Laravel version floors are unknown; an unstated Laravel ceiling is the most common cause of "it worked in the spike, it fails in production."
  • Driver coupling. The package inherits the official Neo4j PHP driver's Bolt protocol support and release cadence. A stale driver pins the whole stack.
  • Abstraction leakage. Graph packages frequently leak Cypher into application code, which makes the abstraction hard to replace and hard to test without a live database.

Key questions (blocking).

  1. Does 5.0.0 support Neo4j 5.x, or is 4.0 the ceiling? What is the minimum supported Neo4j version?
  2. What are the breaking changes in 5.0.0, and what is the upgrade path from 4.x?
  3. Minimum/maximum PHP and Laravel versions?
  4. Is this driver-level (raw Cypher) or OGM-level (models, relationships, migrations)? Is there schema/migration tooling?
  5. Does it support causal cluster routing, read/write splitting, and transactions — and can a Laravel transaction span both Neo4j and the relational store?
  6. Maintenance signals: release cadence, open-issue age, last commit, CI matrix, named maintainers, license.
  7. Who in the organization can write and review Cypher?

Integration Approach

Stack fit. Best positioned as a bounded-context addition, not a system-of-record replacement. The lowest-risk pattern is to keep the relational database authoritative and use Neo4j as a derived read model for traversal-heavy features (permissions resolution, recommendations, dependency graphs). This confines graph complexity to one or two services and keeps the blast radius small. Replacing Eloquent models wholesale with graph models is a much larger commitment and should be treated as a separate, later decision.

Migration path. Phased:

  1. Verification spike (1–2 weeks). Confirm the version matrix. Stand up Neo4j in Docker, exercise the package's documented surface (config, CRUD, traversal, transactions), and capture what breaks. Output: a go/no-go on version support.
  2. Synchronization design. Decide how graph data is populated — dual-write from the application, CDC/outbox from the relational store, or batch/streaming ETL. The transactional outbox pattern is the usual answer; it avoids the dual-write atomicity trap and gives a replayable, idempotent feed.
  3. Pilot behind a flag. One non-critical feature, feature-flagged, with the relational path retained as a fallback.
  4. Expand only after the pilot's failure modes are understood and reconciliation jobs are in place.

Compatibility. Pin explicitly — package major, Neo4j server minor, and PHP/Laravel floor — and encode all three in CI. Do not rely on the release note's 3.5+ shorthand; "plus" is unbounded and untested. Verify that the Laravel version floor is satisfiable alongside whatever else is in composer.json; a single transitive conflict can force a Laravel upgrade, which is a budget item, not a footnote.

Sequencing. Version verification → spike → sync mechanism → pilot → production → (optionally) broader model migration. Do not start at the end. Note that step 2 is on the critical path and is the step most often skipped; teams that skip it discover the dual-write problem in production.

Operational Impact

Maintenance. Two things need ongoing care: the package and the database. If it is community-maintained, single-maintainer, or low-velocity, budget for the realistic possibility of forking or vendor replacement — a package pinned to an EOL Neo4j is a slow-moving liability that becomes urgent at the next security review. Assign explicit ownership; "the team owns it" is not ownership.

Support. Support surface expands from one datastore to two: Neo4j's enterprise support terms (cluster, backup, hot backup) differ from community edition, and that is a procurement decision, not an engineering one. Internal supportability is the sharper constraint — Cypher, graph data modeling, and Neo4j cluster operations are specialized skills, and the on-call rotation needs at least two people who can diagnose a Bolt connection failure at 3 a.m.

Scaling. Neo4j scales well for traversal but has very different scaling characteristics than a relational store: no sharding in the community edition, memory-resident graph assumptions, page cache sizing, and read replicas rather than unlimited horizontal scaling. Capacity planning requires real cardinality and traversal-depth estimates from the pilot — not extrapolation from relational intuition.

Failure modes. Enumerate and design for:

  • Neo4j unavailable — does the feature degrade gracefully or does the request 500? Prefer degradation with a cached/relational fallback for authorization paths especially.
  • Divergence — the derived graph drifts from the system of record. Requires reconciliation jobs, drift metrics, and an alert threshold.
  • Dual-write partial failure — one store commits, the other doesn't. Mitigate with the outbox pattern and idempotent consumers.
  • Driver/protocol mismatch — Bolt version skew between driver and server, typically surfacing only on upgrade.
  • Query pathologies — a Cypher query with an accidental cartesian product or unbounded traversal can saturate the graph; needs query-level timeouts and budgets.
  • Upgrade lockstep — package, driver, and server must move together; an unplanned Neo4j upgrade is a coordinated release, not a patch.

Ramp-up. Estimate 2–4 weeks to productive for a competent Laravel developer using the package, plus a further 3–4 weeks for genuine graph modeling and Cypher fluency. Budget for one person to go deeper and become the internal reference. The package's own learning curve is the smaller half of this; the data-modeling shift is the larger half.

Recommendation. Conditional go, contingent on answering the version-currency question first. If 5.0.0 supports Neo4j 5.x and the breaking changes are documented, the integration is a normal, tractable piece of work. If 4.0 is the ceiling, the version bump is buying compatibility with an unsupported database, and the honest recommendation is to defer adoption until the maintainer ships 5.x support — or to select an alternative that has. Given the assessment rests on a single line of release text, treat everything above as hypotheses to be tested in the two-week spike, not as findings.

Residual risk. High, dominated by unverified version support and the undocumented breaking-change surface. Both are cheap to resolve — one changelog read and one spike — and both should be resolved before any architectural commitment is made.

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.
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
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle