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

如何将Neo4j Cypher中的labels(c)[0]转换为PHP Cypher DSL?

Cypher转PHP Cypher DSL实现及补充参考资源

一、目标Cypher对应的PHP Cypher DSL代码

确保已引入php-cypher-dsl的相关类,以下是完整转换实现:

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

// 初始化节点与关系
$node = Node::create('node');
$relationship = Relationship::create('r');
$c = Node::create('c');

// 构建查询
$queryBuilder = new QueryBuilder();

// MATCH子句
$queryBuilder->match($node->relationship($relationship)->to($c));

// WHERE子句
// 标签判断条件
$labelCondition = Functions::labels($c)->index(0)->eq('SubCategoryM')
    ->orX(Functions::labels($c)->index(0)->eq('CategoryM'));
// 状态判断条件
$statusCondition = $c->property('status')->eq(1)
    ->orX($c->property('status')->eq('1'));
// 节点ID判断条件
$nodeIdCondition = Functions::id($node)->param('node_id');

// 组合所有WHERE条件
$queryBuilder->where(
    $labelCondition->andX($statusCondition)->andX($nodeIdCondition)
);

// RETURN子句
$queryBuilder->return([
    Functions::id($c)->as('id'),
    $c->property('name')->as('name'),
    $c->property('slug')->as('slug')
]);

// 生成最终Cypher语句
$cypher = $queryBuilder->getQuery();
// 绑定参数:$queryBuilder->addParameter('node_id', $yourNodeId);

二、官方文档外的补充参考资源

若官方文档覆盖不全,可通过以下途径获取更多用法:

  • 项目测试用例:查看库的tests目录,里面包含大量覆盖不同语法场景的测试代码,很多未在文档中提及的用法都能找到示例。
  • 核心类源码:直接查阅Node.php、Relationship.php、Functions.php等核心文件的源码,类中的方法注释和实现逻辑能清晰展示支持的语法细节。
  • 社区讨论区:查看项目的GitHub Issue和Discussions板块,很多用户会分享实际使用中的问题与解决方案,能找到针对性的用法案例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:22:16