doudengshen5591
doudengshen5591
2014-02-09 02:40
浏览 69
已采纳

Neo4j php addLabels

I am beginner with Neo4j Rest API. I am using Everyman php library to develop my application. I have problem with creating node with labels.

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'));
}

while I run code I am getting

/var/www/zf2-tutorial/vendor/everyman/neo4jphp/lib/Everyman/Neo4j/Command/SetLabels.php:43 Message: Cannot set a non-label

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • duanjianxi8439
    duanjianxi8439 2014-02-10 23:49
    已采纳

    Try this:

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

    User::addLabels expects an array of Label objects.

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

    Aside: if adding a bare string as a label is functionality you would like to see, please submit a feature request: https://github.com/jadell/neo4jphp/issues

    点赞 评论
  • dongzexi5125
    dongzexi5125 2014-02-09 08:06

    I'm no PHP coder, but a quick look at the source suggests you should be passing an array of Label objects not strings. Your code is not using Everyman\Neo4j\Label

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

相关推荐