You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定Neo4j Cypher查询转换为PHP Cypher DSL?

PHP Cypher DSL 转换实现

以下是对应原生Cypher查询的PHP Cypher DSL代码实现:

use Neo4j\Cypher\DSL\QueryBuilder;
use Neo4j\Cypher\DSL\Node;
use Neo4j\Cypher\DSL\Functions\Type;

// 初始化查询构建器
$queryBuilder = new QueryBuilder();

// 定义两个Resource节点变量a和b
$a = Node::create('a')->withLabel('Resource');
$b = Node::create('b')->withLabel('Resource');

// 构建MATCH子句
$queryBuilder->match($a, $b);

// 构建WHERE子句,绑定参数过滤节点
$queryBuilder->where(
    $a->property('uri')->equals($queryBuilder->param('uri')),
    $b->property('uri')->equals($queryBuilder->param('object'))
);

// 创建动态类型的关系r,类型绑定为参数propertyUri
$relationship = $a->relationshipTo($b, $queryBuilder->param('propertyUri'))->named('r');
$queryBuilder->create($relationship);

// 构建RETURN子句,返回关系类型
$queryBuilder->return(Type::of($relationship));

// 生成Cypher语句(调试用)
// $cypher = $queryBuilder->getQuery();
// 执行时传入参数数组:['uri' => '目标URI', 'object' => '关联对象URI', 'propertyUri' => '关系类型']

关键细节说明:

  • 动态关系类型:通过$queryBuilder->param('propertyUri')将关系类型设为可动态传入的参数,对应原生查询中的{$propertyUri},兼顾灵活性与安全性。
  • 参数绑定:所有外部变量均通过param()方法绑定,避免Cypher注入风险,完全对应原生查询的参数逻辑。
  • 关系类型返回:使用Type::of($relationship)实现原生Cypher中type(r)的功能。

内容的提问来源于stack exchange,提问作者Victor Donet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:52:06