Построение отношений с помощью Neo4J PHP OGM EntityManager

Я пытаюсь построить объект сущности для моих отношений в базе данных Neo4j с GraphAware Neo4j PHP OGM библиотека используя этот простой метод:

public function getRelationshipEntity($entityId) {
$repo = $this->entityManager->getRepository( Entity\Relationship\Fired::class );

return $repo->findOneById($entityId);
}

Здесь у нас есть классы сущностей, сначала отношения:

namespace Entity\Relationship;

use GraphAware\Neo4j\OGM\Annotations as OGM;
use Entity\Issue;
use Entity\Event;

/**
* @OGM\RelationshipEntity(type="FIRED")
*/
class Fired {
/**
* @OGM\GraphId()
*/
protected $id;

/**
* @OGM\StartNode(targetEntity="Entity\Event")
*/
protected $event;

/**
* @OGM\EndNode(targetEntity="Entity\Issue")
*/
protected $issue;

/**
* @var string
*
* @OGM\Property(type="string")
*/
protected $time;

/**
* @var string
*
* @OGM\Property(type="string")
*/
protected $eventName;

}

Затем запустите узел:

namespace Entity;

use GraphAware\Neo4j\OGM\Annotations as OGM;

/**
* @OGM\Node(label="Event")
*/
class Event {

/**
* @OGM\GraphId()
*/
protected $id;

/**
* @var string
*
* @OGM\Property(type="string")
*/
protected $name;
}

..и конечный узел:

namespace Entity;

use Doctrine\Common\Collections\ArrayCollection;
use GraphAware\Neo4j\OGM\Annotations as OGM;

/**
* @OGM\Node(label="Issue")
*/
class Issue {

/**
* @OGM\GraphId()
*/
protected $id;

/**
* @OGM\Property(type="string")
*/
protected $key;

/**
* @OGM\Property(type="string")
*/
protected $created;

/**
* @OGM\Property(type="string")
*/
protected $updated;

/**
* @OGM\Relationship(type="FIRED", direction="INCOMING", relationshipEntity="Entity\Relationship\Fired", collection=true)
* @var ArrayCollection
*/
protected $eventFires;

public function __construct($key) {
$this->key = $key;
$this->eventFires = new ArrayCollection();
}

public function __wakeup() {
$this->__construct($this->key);
}

/**
* @return ArrayCollection
*/
public function getEventFires() {
return $this->eventFires;
}

public function addEventFire(Entity\Relationship\Fired $eventFired) {
$this->eventFires->add($eventFired);
}

public function removeEventFire(Entity\Relationship\Fired $eventFired) {
$this->eventFires->removeElement($eventFired);
}
}

Очевидно, что то, что действительно хорошо работает для узловых узлов, вызывает следующую ошибку для отношений:

Неустранимая ошибка: вызов неопределенного метода GraphAware \ Neo4j \ OGM \ Metadata \ RelationshipEntityMetadata :: hasCustomRepository () в /vendor/graphaware/neo4j-php-ogm/src/EntityManager.php

Любое предложение, как я мог бы обойти это? Я даже пытался использовать EntityManager::createQuery() следующим образом:

public function getRelationships($eventName) {
$query = $this->entityManager->createQuery('MATCH (e:Event)-[f:FIRED{eventName: {eventName}}]->() RETURN e,f ORDER BY f.time');

$query->addEntityMapping('e', 'Entity\Event' );
$query->addEntityMapping('f', 'Entity\Relationship\Fired' );

$query->setParameter( 'eventName', $eventName);

return $query->execute();
}

Но, видимо, addEntityMapping() не работает и для сущностей отношений! (Это может быть функция, но не ошибка):

Исправляемая фатальная ошибка: аргумент 1 передается в GraphAware \ Neo4j \ OGM \ Hydrator \ EntityHydrator :: hydrateNode () должен реализовывать интерфейс GraphAware \ Common \ Type \ Node, экземпляр данного GraphAware \ Bolt \ Result \ Type \ Relationship, называемый в / vendor /graphaware/neo4j-php-ogm/src/Query.php в строке 145 и определено в /vendor/graphaware/neo4j-php-ogm/src/Hydrator/EntityHydrator.php в строке 232

Итак, я решил, что с помощью этой библиотеки я могу легко определять и хранить сущности отношений в Neo4J, но не уверен, как можно легко получить ее с помощью EntityManager, аналогично тому, как я могу это сделать с узлами.

Любая помощь приветствуется!

Как указано в комментариях ниже, это пакеты GraphAware, которые я использую:

graphaware/neo4j-bolt               1.9.1              Neo4j Bolt Binary Protocol PHP Driver
graphaware/neo4j-common             3.4.0              Common Utilities library for Neo4j
graphaware/neo4j-php-client         4.8.0              Neo4j-PHP-Client is the most advanced PHP Client for Neo4j
graphaware/neo4j-php-ogm            1.0.0-RC6          PHP Object Graph Mapper for Neo4j

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]