繁体   English   中英

如何使用 php 和 neo4j 在节点之间创建关系

[英]how can i create relationships between nodes using php and neo4j

我正在通过表单和 php 创建节点,参数通过 POST 获取到 neo4j 数据库。 我想要做的是在我输入人员节点时创建节点之间的关系,以便自动创建关系并且只创建一次。

$nombre = $_POST["nombre"];
$cedula = $_POST["cedula"];
$edad = $_POST["edad"];
$cedulaP = $_POST["cedulaP"];
$cedulaM = $_POST["cedulaM"];
$genero = $_POST["genero"];

$results = $client->runStatements([
        Statement::create('CREATE (p:Persona {nombre: $nombre, cedula: $cedula, edad: $edad, 
         cedulaP: $cedulaP, cedulaM: $cedulaM, genero: $genero })', 
        ['nombre' => $nombre, 'cedula' => $cedula, 'edad' => $edad, 'cedulaP' => $cedulaP, 
        'cedulaM' => $cedulaM, 'genero' => $genero]),

当通过表单输入一个新的人节点时,我希望它创建关系,只要变量 cedulaP 等于 cedula(这个 cedula 来自父节点)。 它是一种家谱。 我遇到的问题是,当我输入一个新节点时,它会给我一个错误。

$results1 = $client->run('MATCH (a:Persona),(b:Persona) WHERE a.cedulaP = b.cedula CREATE (b)-[r:PADRE]->(a)');

我认为我的语法错误,请有人可以帮助我

我认为它与 PHP 库无关。 您可以同时进行两个查询,并且可以将节点属性简化为字典。

$nombre = $_POST["nombre"];
$cedula = $_POST["cedula"];
$edad = $_POST["edad"];
$cedulaP = $_POST["cedulaP"];
$cedulaM = $_POST["cedulaM"];
$genero = $_POST["genero"];

$properties = ['nombre' => $nombre, 'cedula' => $cedula, 'edad' => $edad, 'cedulaP' => $cedulaP, 'cedulaM' => $cedulaM, 'genero' => $genero];

$statement = new Statement('CREATE (p:Persona $props) 
WITH p 
MATCH (b:Persona) WHERE p.cedulaP = b.cedula 
CREATE (b)-[r:PADRE]->(a)', [$props => $properties]);
$client->runStatement($statement, 'default');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM