PHP code example of php-graph-group / cypher-query-builder
1. Go to this page and download the library: Download php-graph-group/cypher-query-builder library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
php-graph-group / cypher-query-builder example snippets
use PhpGraphGroup\CypherQueryBuilder\QueryBuilder;
$results = QueryBuilder::fromNode('a:Person')
->matchingRelationship('a', 'IS_COLLEAGUE', 'b:Person')
->whereIn('a.name', ['Alice', 'Bob'])
->return('b.name AS name') // Notice of the present tense implies the query gets executed immediately.
use PhpGraphGroup\CypherQueryBuilder\QueryBuilder;
use PhpGraphGroup\CypherQueryBuilder\Builders\GraphPatternBuilder;
GraphPatternBuilder::from('node:MyNode') // MATCH (node:MyNode)
GraphPatternBuilder::from('MyNode', 'otherNode') // MATCH (otherNode:MyNode)
GraphPatternBuilder::from('myNode:MyNode', 'otherNode') // MATCH (otherNode:MyNode) (TODO: log warning here?)
GraphPatternBuilder::from('Hello') // MATCH (hello:Hello)
GraphPatternBuilder::from('<Hello') // MATCH () <-[hello:Hello]-()
GraphPatternBuilder::from('<Hello')->addChildNode('Heya') // MATCH () <- [hello:Hello] - (heya:Heya)
// TODO: maybe rename this to addNode to allow for a parallel node, aka joining.
// TODO: If a node gets joined by a child node, it should have an anonymous relationship.
GraphPatternBuilder::from('MyNode')->addChildNode('MyOtherNode') // MATCH (myNode:MyNode), (myOtherNode:MyOtherNode)
GraphPatternBuilder::from('MyNode')->addRelationship()->addChildNode('MyOtherNode') // MATCH (myNode:MyNode)--(myOtherNode:MyOtherNode)
GraphPatternBuilder::from(name: 'noLabel') // MATCH (noLabel)
// TODO: Should it inject numbering in the automatic naming? -> no
// TODO: Should we pre-emptively throw an error or let the syntax error be found by the database?
// => first version should stay away from this, but we can revisit.
GraphPatternBuilder::from('MyNode')->addRelationship()->addChildNode('MyNode') // MATCH (myNode:MyNode) - [] -> (myNode:MyNode)
$results = QueryBuilder::from(GraphPatternBuilder::from('node:MyNode')
->addRelationship('<Parent')
->addChildNode('sibling1:MyNode')->end()
->addChildNode('sibling2:MyNode')->end()
->end()
->addRelationship('Parent>')
->addChildNode('grandParent:MyNode')->end()
->end()
)->whereIn('sibling1.name', ['Harry', 'Bart'])
->andWhere('sibling2.name', '<>', 'Maria')
->andWhere('grandParent.age', '>=', 70)
->count('grandParent')
use PhpGraphGroup\CypherQueryBuilder\QueryBuilder;
// Refer unambiguously to the property 'name' on the variable 'p'
$name = QueryBuilder::from('Person', 'p')
->where('p.name', '=', 'Alice')
->returning('p.name')
->only()
// Runs like:
// MATCH (p:Person) WHERE p.name = $param0 RETURN p.name AS name LIMIT 1
// Refer to the property of p without using the dot notation.
$lastNames = QueryBuilder::from('Person', 'p')
->where('name', '=', 'Alice')
->pluck('lastName')
// Runs like:
// MATCH (p:Person) WHERE p.name = $param0 RETURN p.lastName AS lastName
// Automatically generate a name based on the Label and get al the friends of Alice for over a year.
$friends = QueryBuilder::from('Person')
->matchingRelationship('person', 'FRIENDS_WITH', 'friend', 'friendsWith')
->matchingNode('Person', 'friend')
->where('friendsWith.since', '<=', (new DateTime())->sub(new DateInterval('P1Y')))
->andWhere('person.name', '=', 'Alice')
->return('friend.name AS name', 'friendsWith.since AS friendsSince')
// Runs like:
// MATCH (person:Person)-[friendsWith:FRIENDS_WITH]->(friend:Person) WHERE friendsWith <= $param0 AND person.name = $param1 RETURN friend.name AS name, friendsWith.since AS friendsSince
text
MATCH { match patterns }
OPTIONAL MATCH* { optional match patterns }
CALL* { subquery }
WHERE { where conditions }
DELETE { deleted variables }
DETACH DELETE { deleted variables }
REMOVE { removed properties & labels }
CREATE { create patterns }
SET { set assignments }
MERGE { merge pattern }
ON CREATE SET { set assignments }
ON MATCH SET { set assignments }
RETURN { return expressions }
ORDER BY { ASC|DESC } { order expressions }
SKIP { skip count }
LIMIT { limit count }
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.