arjun
arjun

Reputation: 21

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

Upvotes: 0

Views: 739

Answers (2)

Josh Adell
Josh Adell

Reputation: 1555

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

Upvotes: 1

Mike Holdsworth
Mike Holdsworth

Reputation: 1108

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");

Upvotes: 0

Related Questions