paulmozo/php-cypher-query-builder

这是一个PHP库,用于生成与图数据库(如Neo4J)一起使用的Cypher查询

0.11 2018-07-10 12:48 UTC

README

这是一个PHP库,用于生成与图数据库(如Neo4J)一起使用的Cypher查询

注释

  • 这是一个正在进行中的项目,还有很多工作要做

使用查询构建器轻松创建Cypher查询

$client = new Moozla\QueryBuilder\Client();

$client
  ->match('Person', 'person')
  ->match('LIKES')
  ->match('Movie', 'movie')
  ->where('movie', 'name', "=", 'Taxi Driver')
  ->return('movie');

echo (string)$client;

将输出字符串

MATCH (person:Person)-[:LIKES]-(movie:Movie) WHERE movie.name = "Taxi Driver" RETURN movie

此项目使遍历图变得简单。主要好处之一是它可以自动确定是否需要匹配节点或关系。

运行测试

./vendor/bin/phpunit tests/

本项目要做的事情

  • 支持更多where子句的运算符
  • 添加更多子句,如"SET"、"CREATE"和"DELETE"
  • 添加方向性关系支持
  • 当检测到无效的Cypher时,增加更多异常
  • 通过packagist提供此项目

示例

要查看完整示例列表,请参阅位于tests/ClientTests/中的客户端测试

匹配节点-关系-节点并返回所有三个

$client = new Moozla\QueryBuilder\Client();

$client
  ->match('Person', 'person')
  ->match('LIKES', 'likes')
  ->match('Movie', 'movie')
  ->return('person')
  ->return('likes')
  ->return('movie');

echo (string)$client;

将输出字符串

MATCH (person:Person)-[likes:LIKES]-(movie:Movie) RETURN person, likes, movie

匹配节点然后向所有子句添加自定义CYPHER

$client = new Moozla\QueryBuilder\Client();

$client
  ->match('Person', 'person')
  ->appendToMatch('-[]->(:CustomMatch)')
  ->appendToWhere('(person)-[:KNOWS]-({name: 'Jeff'})')
  ->appendToReturn('count(person)');

echo (string)$client;

将输出字符串

MATCH (person:Person)-[]->(:CustomMatch) WHERE (person)-[:KNOWS]-({name: 'Jeff'}) RETURN count(person)

注意:所有的'appendTo'方法将简单地将给定的字符串追加到指定的子句中,允许使用其他查询构建器方法不支持直接使用的CYPHER

多匹配

有时在使用Cypher时,在连接它们之前需要匹配图的多个部分。查询构建器支持此操作

$client = new Moozla\QueryBuilder\Client();
$client
  ->match('Person', 'person')
  ->endMatch()
  ->match('Movie', 'movie')
  ->match('DIRECTED_BY')
  ->match('Director', 'director')
  ->where('director', 'name', '=', 'Ms Director')
  ->return('movie')
  ->return('person');
      
echo (string)$client;

将输出以下内容

MATCH (person:Person) MATCH (movie:Movie)-[:DIRECTED_BY]-(director:Director) WHERE director.name = "Ms Director" RETURN movie, person