【发布时间】:2022-11-25 03:50:10
【问题描述】:
从 Everyman Client 更改为 Laudis Client,以便 PHP 访问 AURA DB (Neo4j)。
代码:
$outerQuery = "MATCH (n) return n.name AS name";
$outerResult = $client->run($outerQuery);
foreach ($outerResult as $detailOut) {
$innerQuery = 'MATCH (n) WHERE n.name = "'.detailOut['name'].'" return n';
$innerResult = $client->run($innerQuery);
foreach ($innerResult as $detailIn) {
// do something
}
}
$client 是这样构造的
// embedding Neo4J PHP DB driver
use Laudis\Neo4j\Authentication\Authenticate;
use Laudis\Neo4j\ClientBuilder;
// establish a client-object for database access
$client = ClientBuilder::create()
->withDriver(
'example',
$_ENV['db_url'],
Authenticate::basic($_ENV['db_username'], $_ENV['db_password'])
)
->build();
外部查询获得有效结果,但只要首先执行内部 db 语句,外部循环就会中断 - 无论是否使用依赖参数。您可以在语句之前执行代码,这不是问题,但是运行语句会终止外循环。如果我注释掉内部循环中的运行语句,循环将正确运行并显示预期结果。这些语句已经在 Neo4j 浏览器中进行了测试并且没有问题,但即使使用像这些示例这样的简单语句,它也会破坏外部循环。
我唯一的猜测是,我不能像以前使用 Everyman Client 那样将这些语句用于 LAUDIS 客户端。
任何人都知道我需要更改什么或我需要使用哪些其他代码来使内部循环语句依赖于外部循环结果的字段?
谢谢
【问题讨论】: