1

私のドメイン モデルには というエンティティがありUser、次の方法でそのタイプの新しいノードを作成しています。

public static function register(User $user){
        if(!$user->node)
            $user->node = new Node(Neo4jClient::client());      
        try {
            $user->node->setProperty('__type__', TYPE_USER);
            $user->node->setProperty('username', $user->getUsername());
            $user->node->setProperty('password', $user->getPassword());
            $user->node->setProperty('name', $user->getName());
            $user->node->setProperty('age', $user->getAge());
            $user->node->setProperty('location', $user->getLocation());
            $user->node->setProperty('website', $user->getWebsite());
            $user->node->setProperty('about', $user->getAbout());
            $user->node->setProperty('rating', $user->getRating());
            $user->node->save();

            $user->setId($user->node->getId());

            $userIndex = new Index(Neo4jClient::client(), Index::TypeNode, TYPE_USER);
            $userIndex->add($user->node, 'username', $user->username);

            return true;
        } catch (Exception $e){
            return false;
        }
    }

そして、ノードがデータベースに作成され、すべて問題ありません。CREATE n例外...この方法では、たとえばcypher を使用しているかのように、ノードは「デフォルトノード」として作成されます。私が実際に望んでいるのは、特定のタイプのノードを作成することですが、CREATE (n:User)実際に暗号を直接使用する必要はありません。

どうすればこれを達成できますか?

4

1 に答える 1

3

Neo4j の「ラベル」を使用したい。これを試して:

$userLabel = Neo4jClient::client()->makeLabel('User');
$user->node->addLabels(array($userLabel));

詳細はこちら: https://github.com/jadell/neo4jphp/wiki/Labels

于 2014-02-14T03:02:26.730 に答える