Кажется, я слишком устал, чтобы найти решение, может быть, у кого-то есть намек на меня.neo4jphp: Cypher и Resultset отличаются
Я построил график в Neo4J, который я подключаю через neo4jphp (каждый человек). Используя java-браузер, график выглядит нормально, каждый пользователь существует один раз и может иметь несколько групп, к которым он принадлежит.
При создании пользователя я использую MERGE для того, чтобы избежать их в два раза - как
MERGE (user:PERSON {
firstname: "Max",
name: "Muster",
password:"e52ddddddd9afb7b373f9da437",
title:"something",
login:"Nick",
status:"active"
})
ON CREATE SET user.uuid = "'.uniqid().'" // PHP function for a UUID
return user;
Это хорошо работает, как я вижу правильное количество пользователей, даже когда я повторно отправить запрос или перезагрузить страницу.
Пользователей связаны с запросом к группам как этого
MATCH (user:PERSON), (team:GROUP)
WHERE user.name= "Muster" AND user.firstname="Max" AND team.name="LOCAL_USER"
CREATE (user)-[:IS_MEMBER_OF {role:"user", status:"active"}]->(team);
Проверки это в графическом интерфейсе пользователя Neo4j показывает правильный график (по крайней мере, от того, что можно видеть). У меня есть правильное количество пользователей и их отношения.
Когда я запрашиваю график непосредственно Cypher в графическом интерфейсе браузера, как этот
MATCH (user:PERSON {status: "active"})-[relation:IS_MEMBER_OF{status:"active"}]->(team:GROUP {name:"LOCAL_USER"})
RETURN user
ORDER BY user.name;
я получаю правильное количество пользователей.
Когда я использую neo4jphp lib (каждый человек), я получаю некоторых пользователей double - набор результатов имеет несколько элементов с одним и тем же пользователем. Я не мог понять, почему они ведут себя по-другому, но я полагаю, что я мог каким-то образом испортить отношения. Но все же мне интересно, почему тот же запрос cypher возвращает разное количество записей, когда вы отправляете его через графический интерфейс или через everyman lib, и мне понадобится подсказка о том, как изменить, возможно, запросы, чтобы убедиться, что я получаю только одну запись на пользователя в каждом пользователь только один раз подключается к группе LOCAL_USER.
Спасибо, что выталкивали меня в нужное русло.
Спасибо, это была недостающая ссылка! А также спасибо за то, что указали на использование параметра и изменение инструкции MERGE, протестировали его, и все получилось отлично! Очень ценится - и так быстро :) +1 – Balael