【问题标题】:Neo4j php addLabelsNeo4j php 添加标签
【发布时间】:2014-02-09 02:40:24
【问题描述】:

我是 Neo4j Rest API 的初学者。我正在使用Everyman php 库来开发我的应用程序。我在创建带有标签的节点时遇到问题。

use Everyman\Neo4j\Client,
    Everyman\Neo4j\Transport,
    Everyman\Neo4j\Node,
    Everyman\Neo4j\Relationship;
use Everyman\Neo4j\Cypher;

public function indexAction()
{  
    $client = new Client('localhost', 7474);
    $user = new Node($client);
    $user->setProperty('name', 'Rohan Chingula');
    $user->save()->addLabels(array('Users'));
}

当我运行代码时,我得到了

/var/www/zf2-tutorial/vendor/everyman/neo4jphp/lib/Everyman/Neo4j/Command/SetLabels.php:43 信息: 不能设置非标签

【问题讨论】:

    标签: php neo4j


    【解决方案1】:

    试试这个:

    $userLabel = $client->makeLabel('Users');
    $user->save()->addLabels(array($userLabel));
    

    User::addLabels 需要一个 Label 对象数组。

    https://github.com/jadell/neo4jphp/wiki/Labels#wiki-adding-labels-to-a-node

    另外:如果添加裸字符串作为标签是您希望看到的功能,请提交功能请求:https://github.com/jadell/neo4jphp/issues

    【讨论】:

    • 嗨 Josh Adell,在上面的示例中,我使用 $client = new Client('localhost', 7474); 创建节点; $user = 新节点($client);这不会创建自定义节点。比如演员、用户、电影。我想制作用户节点、演员节点等(自定义节点名称不像 234、34 ec etetra)。我怎么得到这个。你能给我举个例子吗?.;
    【解决方案2】:

    我不是 PHP 编码员,但快速查看源代码表明您应该传递一个 Label 对象数组而不是字符串。您的代码没有使用 Everyman\Neo4j\Label

      $labelSet = implode(':', array_map(function ($label) {
        if (!($label instanceof Label)) {
            throw new InvalidArgumentException("Cannot set a non-label");
    

    【讨论】:

    • 我已经在我的代码中包含了 Everyman\Neo4j\Label 。但结果是一样的。我不知道为什么这会发生在我身上。如果你去 Everyman\Neo4j\Node.php 那么你会在第 116 行看到 addLabels 函数。所以我认为我们不需要 Everyman\Neo4j\Label 。 Mike 可以举个例子来建议我如何解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2021-05-15
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多