neo4j-php / query-api
Easy to use class to run Cypher queries on the Query API
Requires
- php: ^8.1
- ext-json: *
- php-http/discovery: ^1.17
- psr/http-client: ^1.0
Requires (Dev)
- dg/bypass-finals: ^1.9
- friendsofphp/php-cs-fixer: ^3.68
- guzzlehttp/guzzle: ^7.9
- phpunit/phpunit: ^10.0
- psalm/plugin-mockery: ^1.2
- psalm/plugin-phpunit: ^0.19.2
- vimeo/psalm: ^6.8
This package is not auto-updated.
Last update: 2025-05-22 10:23:29 UTC
README
Interact programmatically with Top Graph Technology
- Easy to start with, just build your client in one line and start running queries
- Use an intuitive API for smooth query execution
- Built and tested under close collaboration with the official Neo4j driver team
- Fully typed with Psalm and CS fixed for code quality
- Uses HTTP under the hood instead of bolt
- Small, lightweight, well maintained and fully tested codebase
Installation
You can install the package via Composer:
composer require neo4j-php/query-api
Client Installation
This client uses the HTTP protocol, make sure you have psr-7, psr-17, and psr-18 implementations included in your project. If you don't have any, you can install one of the many options via Composer:
composer require guzzlehttp/guzzle
NOTE: PSR-17 and PSR-18 are essential for HTTP client communication. Other compatible clients like Guzzle can also be used. * PSR auto-discovery will detect the installed HTTP client automatically.
Usage
Connecting to Neo4j
use Neo4j\QueryAPI\Neo4jQueryAPI; use Neo4j\QueryAPI\Objects\Authentication; $client = Neo4jQueryAPI::login('http://localhost:7474', Authentication::basic('username', 'password'));
Running a Query
$query = 'MATCH (n) RETURN n'; $result = $client->run($query); foreach ($result as $record) { print_r($record); }
Transactions
Begin a Transaction
$transaction = $client->beginTransaction();
Run a Query in a Transaction
$query = 'CREATE (n:Person {name: $name}) RETURN n'; $parameters = ['name' => 'John Doe']; $result = $transaction->run($query, $parameters);
Commit a Transaction
$transaction->commit();
Rollback a Transaction
$transaction->rollback();
Testing
To run the tests, execute the following command:
vendor/bin/phpunit
Cypher values and types map to these php types and classes:
Cypher | PHP |
---|---|
List | * array |
Integer | * int |
Float | * float |
Boolean | * bool |
Null | * null |
String | * string |
Array | * array |
Local DateTime | * string (will be upgraded in version 1.1) |
Local Time | * string (will be upgraded in version 1.1) |
Zoned DateTime | * string (will be upgraded in version 1.1) |
Zoned Time | * string (will be upgraded in version 1.1) |
Duration | * string (will be upgraded in version 1.1) |
WGS 84 2D Point | Neo4j\QueryAPI\Objects\Point |
WGS 84 3D Point | Neo4j\QueryAPI\Objects\Point |
Cartesian 2D Point | Neo4j\QueryAPI\Objects\Point |
Cartesian 3D Point | Neo4j\QueryAPI\Objects\Point |
Map | * array |
Node | Neo4j\QueryAPI\Objects\Node |
Relationship | Neo4j\QueryAPI\Objects\Relationship |
Path | Neo4j\QueryAPI\Objects\Relationship |
Diving deeper:
Feature | Supported? |
---|---|
Authentication | Yes |
Transaction | Yes |
HTTP | Yes |
Cluster | Partly * |
Aura | Yes |
Bookmarks | Yes |
Bolt | No |
* Client side routing is only supported in the Neo4j driver
NOTE: It supports neo4j databases versions > 5.25 or Neo4j Aura (which has QueryAPI enabled.)
Contributing
Please see CONTRIBUTING.md for details.
Security
If you discover any security-related issues, please email security@nagels.tech instead of using the issue tracker.
Credits
- Created with ❤️ by Nagels
- Kiran Chandani,
- Pratiksha Zalte,
- Ghlen Nagels
License
The MIT License (MIT). Please see License File for more information.