paulmozo / php-cypher-query-builder
这是一个PHP库,用于生成与图数据库(如Neo4J)一起使用的Cypher查询
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: >=6
This package is not auto-updated.
Last update: 2024-09-19 17:41:30 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