PHP code example of mkorkmaz / redislabs-redisgraph-php
1. Go to this page and download the library: Download mkorkmaz/redislabs-redisgraph-php 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/ */
mkorkmaz / redislabs-redisgraph-php example snippets
use Redislabs\Module\RedisGraph\Interfaces\QueryInterface;
use Redislabs\Module\RedisGraph\Result;
interface RedisGraph
{
public function rawQuery(QueryInterface $query) : array
public function query(QueryInterface $query) : Result
public function delete(string $name) : string;
public function explain(QueryInterface $query) : string;
public function commit(QueryInterface $query) : Result
}
declare(strict_types=1);
use Redis;
use Redislabs\Module\RedisGraph\RedisGraph;
$redisClient = new Redis();
$redisClient->connect('127.0.0.1');
$redisGraph = RedisGraph::createWithPhpRedis($redisClient);
declare(strict_types=1);
use Predis;
use Redislabs\Module\RedisGraph\RedisGraph;
$redisClient = new Predis\Client();
$redisGraph = RedisGraph::createWithPredis($redisClient);
use Redislabs\Module\RedisGraph\Node;
use Redislabs\Module\RedisGraph\Edge;
use Redislabs\Module\RedisGraph\GraphConstructor;
$labelSource = 'person';
$labelDestination = 'country';
$propertiesSource = ['name' => 'John Doe', 'age' => 33, 'gender' => 'male', 'status' => 'single'];
$propertiesDestination = ['name' => 'Japan'];
$edgeProperties = ['purpose' => 'pleasure', 'duration' => 'two weeks'];
$person = Node::createWithLabel($labelSource)
->withProperties($propertiesSource)
->withAlias('CatOwner');
$country = Node::createWithLabelAndProperties($labelDestination, $propertiesDestination)
->withAlias('CatCountry');
$edge = Edge::create($person, 'visited', $country)
->withProperties($edgeProperties);
$graph = new GraphConstructor('TRAVELLERS');
$graph->addNode($person);
$graph->addNode($country);
$graph->addEdge($edge);
$commitQuery = $graph->getCommitQuery();
$result = $redisGraph->commit($commitQuery);
var_dump($result->getLabelsAdded()); // int(2)
var_dump($result->getNodesCreated()); // int(2)
var_dump($result->getLabelsAdded()); // int(2)
var_dump($result->getNodesDeleted()); // int(0)
var_dump($result->getRelationshipsCreated()); // int(1)
var_dump($result->getRelationshipsDeleted()); // int(0)
var_dump($result->getPropertiesSet()); // int(7)
var_dump($result->getExecutionTime()); // float(0.9785)
$propertiesSource = ['name' => 'Jane Doe', 'age' => 30, 'gender' => 'female', 'status' => 'single'];
$propertiesDestination = ['name' => 'Japan'];
$edgeProperties = ['purpose' => 'pleasure', 'duration' => 'one weeks'];
$person2 = Node::createWithLabel($labelSource)->withProperties($propertiesSource);
$country2 = Node::createWithLabelAndProperties($labelDestination, $propertiesDestination);
$edge2 = Edge::merge($person2, 'visited', $country2)->withProperties($edgeProperties);
$propertiesSource = ['name' => 'Kedibey', 'age' => 13, 'gender' => 'male', 'status' => 'single'];
$propertiesDestination = ['name' => 'Turkey'];
$edgeProperties = ['purpose' => 'living', 'duration' => 'whole life'];
$person3 = Node::createWithLabel($labelSource)->withProperties($propertiesSource);
$country3 = Node::createWithLabelAndProperties($labelDestination, $propertiesDestination);
$edge3 = Edge::merge($person3, 'visited', $country3)->withProperties($edgeProperties);
$graph = new GraphConstructor('TRAVELLERS');
$graph->addNode($person2);
$graph->addNode($country2);
$graph->addEdge($edge2);
$graph->addNode($person3);
$graph->addNode($country3);
$graph->addEdge($edge3);
$commitQuery = $graph->getCommitQueryWithMerge();
$this->redisGraph->commit($commitQuery);
use Redislabs\Module\RedisGraph\Query;
$matchQueryString = 'MATCH (p:person)-[v:visited {purpose:"pleasure"}]->(c:country)
RETURN p.name, p.age, v.purpose, v.duration, c.name';
$matchQuery = new Query('TRAVELLERS', $matchQueryString);
$result = $redisGraph->query($matchQuery);
$labels = $result->getLabels();
$resultSet = $result->getResultSet();
var_dump($labels); // Dumps column labels
var_dump($resultSet[0]); // Dumps first result
...
$result->prettyPrint();
/* Prints
------------------------------------------------------
| p.name | p.age | v.purpose | v.duration | c.name |
------------------------------------------------------
| John Doe | 33 | pleasure | two weeks | Japan |
| Jane Doe | 30 | pleasure | one weeks | Japan |
------------------------------------------------------
*/
use MP\Cypher\QueryBuilder;
$queryBuilder = new QueryBuilder();
$queryBuilder->addMatch()
->addNode('p', 'person')
->relation('v', 'visited', ['purpose' => 'pleasure'])->right()
->node('c', 'country');
$matchQueryString = $queryBuilder->getQuery('p.name', 'p.age', 'v.purpose', 'c.name');
echo $matchQueryString;
// Prints "MATCH (p:person)-[v:visited {purpose:'pleasure'}]->(c:country) RETURN p.name,p.age,v.purpose,c.name"
bash
composer