Skip to content

neo4j-php/neo4j-query-api

Repository files navigation

Neo4j Query API client

License Version Codacy Badge codecov Packagist Downloads

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

License

The MIT License (MIT). Please see License File for more information.

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •