2

I am working on a project for which I need work on graph database. So I have learnt basics of Neo4j (cypher language) .But I do not know how to access / query the database from php. Or suggest me any other way to work on graph database.

Help will be greatly appreciated.

composer.json

[
{
    "name": "monolog/monolog",
    "version": "1.13.1",
    "version_normalized": "1.13.1.0",
    "source": {
        "type": "git",
        "url": "https://github.com/Seldaek/monolog.git",
        "reference": "c31a2c4e8db5da8b46c74cf275d7f109c0f249ac"
    },
    "dist": {
        "type": "zip",
        "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c31a2c4e8db5da8b46c74cf275d7f109c0f249ac",
        "reference": "c31a2c4e8db5da8b46c74cf275d7f109c0f249ac",
        "shasum": ""
    },
    "require": {
        "neoxygen/neoclient": "~2.1"
    },
    "provide": {
        "psr/log-implementation": "1.0.0"
    },
    "require-dev": {
        "aws/aws-sdk-php": "~2.4, >2.4.8",
        "doctrine/couchdb": "~1.0@dev",
        "graylog2/gelf-php": "~1.0",
        "phpunit/phpunit": "~4.0",
        "raven/raven": "~0.5",
        "ruflin/elastica": "0.90.*",
        "swiftmailer/swiftmailer": "~5.3",
        "videlalvaro/php-amqplib": "~2.4"
    },
    "suggest": {
        "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
        "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
        "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
        "ext-mongo": "Allow sending log messages to a MongoDB server",
        "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
        "raven/raven": "Allow sending log messages to a Sentry server",
        "rollbar/rollbar": "Allow sending log messages to Rollbar",
        "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
        "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib"
    },
    "time": "2015-03-09 09:58:04",
    "type": "library",
    "extra": {
        "branch-alias": {
            "dev-master": "1.13.x-dev"
        }
    },
    "installation-source": "dist",
    "autoload": {
        "psr-4": {
            "Monolog\\": "src/Monolog"
        }
    },
    "notification-url": "https://packagist.org/downloads/",
    "license": [
        "MIT"
    ],
    "authors": [
        {
            "name": "Jordi Boggiano",
            "email": "j.boggiano@seld.be",
            "homepage": "http://seld.be"
        }
    ],
    "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
    "homepage": "http://github.com/Seldaek/monolog",
    "keywords": [
        "log",
        "logging",
        "psr-3"
    ]
},
{
    "name": "guzzlehttp/streams",
    "version": "2.1.0",
    "version_normalized": "2.1.0.0",
    "source": {
        "type": "git",
        "url": "https://github.com/guzzle/streams.git",
        "reference": "f91b721d73f0e561410903b3b3c90a5d0e40b534"
    },
    "dist": {
        "type": "zip",
        "url": "https://api.github.com/repos/guzzle/streams/zipball/f91b721d73f0e561410903b3b3c90a5d0e40b534",
        "reference": "f91b721d73f0e561410903b3b3c90a5d0e40b534",
        "shasum": ""
    },
    "require": {
        "php": ">=5.4.0"
    },
    "require-dev": {
        "phpunit/phpunit": "~4.0"
    },
    "time": "2014-08-17 21:15:53",
    "type": "library",
    "extra": {
        "branch-alias": {
            "dev-master": "2.0-dev"
        }
    },
    "installation-source": "dist",
    "autoload": {
        "psr-4": {
            "GuzzleHttp\\Stream\\": "src/"
        },
        "files": [
            "src/functions.php"
        ]
    },
    "notification-url": "https://packagist.org/downloads/",
    "license": [
        "MIT"
    ],
    "authors": [
        {
            "name": "Michael Dowling",
            "email": "mtdowling@gmail.com",
            "homepage": "https://github.com/mtdowling"
        }
    ],
    "description": "Provides a simple abstraction over streams of data (Guzzle 4+)",
    "homepage": "http://guzzlephp.org/",
    "keywords": [
        "Guzzle",
        "stream"
    ]
},
{
    "name": "guzzlehttp/guzzle",
    "version": "4.2.3",
    "version_normalized": "4.2.3.0",
    "source": {
        "type": "git",
        "url": "https://github.com/guzzle/guzzle.git",
        "reference": "66fd916e9f9130bc22c51450476823391cb2f67c"
    },
    "dist": {
        "type": "zip",
        "url": "https://api.github.com/repos/guzzle/guzzle/zipball/66fd916e9f9130bc22c51450476823391cb2f67c",
        "reference": "66fd916e9f9130bc22c51450476823391cb2f67c",
        "shasum": ""
    },
    "require": {
        "ext-json": "*",
        "guzzlehttp/streams": "~2.1",
        "php": ">=5.4.0"
    },
    "require-dev": {
        "ext-curl": "*",
        "phpunit/phpunit": "~4.0",
        "psr/log": "~1.0"
    },
    "suggest": {
        "ext-curl": "Guzzle will use specific adapters if cURL is present"
    },
    "time": "2014-10-05 19:29:14",
    "type": "library",
    "extra": {
        "branch-alias": {
            "dev-master": "4.2-dev"
        }
    },
    "installation-source": "dist",
    "autoload": {
        "psr-4": {
            "GuzzleHttp\\": "src/"
        },
        "files": [
            "src/functions.php"
        ]
    },
    "notification-url": "https://packagist.org/downloads/",
    "license": [
        "MIT"
    ],
    "authors": [
        {
            "name": "Michael Dowling",
            "email": "mtdowling@gmail.com",
            "homepage": "https://github.com/mtdowling"
        }
    ],
    "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
    "homepage": "http://guzzlephp.org/",
    "keywords": [
        "client",
        "curl",
        "framework",
        "http",
        "http client",
        "rest",
        "web service"
    ]
},
{
    "name": "symfony/event-dispatcher",
    "version": "v2.7.0",
    "version_normalized": "2.7.0.0",
    "source": {
        "type": "git",
        "url": "https://github.com/symfony/EventDispatcher.git",
        "reference": "687039686d0e923429ba6e958d0baa920cd5d458"
    },
    "dist": {
        "type": "zip",
        "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/687039686d0e923429ba6e958d0baa920cd5d458",
        "reference": "687039686d0e923429ba6e958d0baa920cd5d458",
        "shasum": ""
    },
    "require": {
        "php": ">=5.3.9"
    },
    "require-dev": {
        "psr/log": "~1.0",
        "symfony/config": "~2.0,>=2.0.5",
        "symfony/dependency-injection": "~2.6",
        "symfony/expression-language": "~2.6",
        "symfony/phpunit-bridge": "~2.7",
        "symfony/stopwatch": "~2.3"
    },
    "suggest": {
        "symfony/dependency-injection": "",
        "symfony/http-kernel": ""
    },
    "time": "2015-05-02 15:21:08",
    "type": "library",
    "extra": {
        "branch-alias": {
            "dev-master": "2.7-dev"
        }
    },
    "installation-source": "dist",
    "autoload": {
        "psr-4": {
            "Symfony\\Component\\EventDispatcher\\": ""
        }
    },
    "notification-url": "https://packagist.org/downloads/",
    "license": [
        "MIT"
    ],
    "authors": [
        {
            "name": "Fabien Potencier",
            "email": "fabien@symfony.com"
        },
        {
            "name": "Symfony Community",
            "homepage": "https://symfony.com/contributors"
        }
    ],
    "description": "Symfony EventDispatcher Component",
    "homepage": "https://symfony.com"
},
{
    "name": "symfony/dependency-injection",
    "version": "v2.7.0",
    "version_normalized": "2.7.0.0",
    "source": {
        "type": "git",
        "url": "https://github.com/symfony/DependencyInjection.git",
        "reference": "137bf489c5151c7eb1e4b7dd34a123f9a74b966d"
    },
    "dist": {
        "type": "zip",
        "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/137bf489c5151c7eb1e4b7dd34a123f9a74b966d",
        "reference": "137bf489c5151c7eb1e4b7dd34a123f9a74b966d",
        "shasum": ""
    },
    "require": {
        "php": ">=5.3.9"
    },
    "conflict": {
        "symfony/expression-language": "<2.6"
    },
    "require-dev": {
        "symfony/config": "~2.2",
        "symfony/expression-language": "~2.6",
        "symfony/phpunit-bridge": "~2.7",
        "symfony/yaml": "~2.1"
    },
    "suggest": {
        "symfony/config": "",
        "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
        "symfony/yaml": ""
    },
    "time": "2015-05-29 14:44:44",
    "type": "library",
    "extra": {
        "branch-alias": {
            "dev-master": "2.7-dev"
        }
    },
    "installation-source": "dist",
    "autoload": {
        "psr-4": {
            "Symfony\\Component\\DependencyInjection\\": ""
        }
    },
    "notification-url": "https://packagist.org/downloads/",
    "license": [
        "MIT"
    ],
    "authors": [
        {
            "name": "Fabien Potencier",
            "email": "fabien@symfony.com"
        },
        {
            "name": "Symfony Community",
            "homepage": "https://symfony.com/contributors"
        }
    ],
    "description": "Symfony DependencyInjection Component",
    "homepage": "https://symfony.com"
},
{
    "name": "symfony/filesystem",
    "version": "v2.7.0",
    "version_normalized": "2.7.0.0",
    "source": {
        "type": "git",
        "url": "https://github.com/symfony/Filesystem.git",
        "reference": "ae4551fd6d4d4f51f2e7390fbc902fbd67f3b7ba"
    },
    "dist": {
        "type": "zip",
        "url": "https://api.github.com/repos/symfony/Filesystem/zipball/ae4551fd6d4d4f51f2e7390fbc902fbd67f3b7ba",
        "reference": "ae4551fd6d4d4f51f2e7390fbc902fbd67f3b7ba",
        "shasum": ""
    },
    "require": {
        "php": ">=5.3.9"
    },
    "require-dev": {
        "symfony/phpunit-bridge": "~2.7"
    },
    "time": "2015-05-15 13:33:16",
    "type": "library",
    "extra": {
        "branch-alias": {
            "dev-master": "2.7-dev"
        }
    },
    "installation-source": "dist",
    "autoload": {
        "psr-4": {
            "Symfony\\Component\\Filesystem\\": ""
        }
    },
    "notification-url": "https://packagist.org/downloads/",
    "license": [
        "MIT"
    ],
    "authors": [
        {
            "name": "Fabien Potencier",
            "email": "fabien@symfony.com"
        },
        {
            "name": "Symfony Community",
            "homepage": "https://symfony.com/contributors"
        }
    ],
    "description": "Symfony Filesystem Component",
    "homepage": "https://symfony.com"
},
{
    "name": "symfony/config",
    "version": "v2.7.0",
    "version_normalized": "2.7.0.0",
    "source": {
        "type": "git",
        "url": "https://github.com/symfony/Config.git",
        "reference": "537e9912063e66aa70cbcddd7d6e6e8db61d98e4"
    },
    "dist": {
        "type": "zip",
        "url": "https://api.github.com/repos/symfony/Config/zipball/537e9912063e66aa70cbcddd7d6e6e8db61d98e4",
        "reference": "537e9912063e66aa70cbcddd7d6e6e8db61d98e4",
        "shasum": ""
    },
    "require": {
        "php": ">=5.3.9",
        "symfony/filesystem": "~2.3"
    },
    "require-dev": {
        "symfony/phpunit-bridge": "~2.7"
    },
    "time": "2015-05-15 13:33:16",
    "type": "library",
    "extra": {
        "branch-alias": {
            "dev-master": "2.7-dev"
        }
    },
    "installation-source": "dist",
    "autoload": {
        "psr-4": {
            "Symfony\\Component\\Config\\": ""
        }
    },
    "notification-url": "https://packagist.org/downloads/",
    "license": [
        "MIT"
    ],
    "authors": [
        {
            "name": "Fabien Potencier",
            "email": "fabien@symfony.com"
        },
        {
            "name": "Symfony Community",
            "homepage": "https://symfony.com/contributors"
        }
    ],
    "description": "Symfony Config Component",
    "homepage": "https://symfony.com"
},
{
    "name": "symfony/yaml",
    "version": "v2.7.0",
    "version_normalized": "2.7.0.0",
    "source": {
        "type": "git",
        "url": "https://github.com/symfony/Yaml.git",
        "reference": "4a29a5248aed4fb45f626a7bbbd330291492f5c3"
    },
    "dist": {
        "type": "zip",
        "url": "https://api.github.com/repos/symfony/Yaml/zipball/4a29a5248aed4fb45f626a7bbbd330291492f5c3",
        "reference": "4a29a5248aed4fb45f626a7bbbd330291492f5c3",
        "shasum": ""
    },
    "require": {
        "php": ">=5.3.9"
    },
    "require-dev": {
        "symfony/phpunit-bridge": "~2.7"
    },
    "time": "2015-05-02 15:21:08",
    "type": "library",
    "extra": {
        "branch-alias": {
            "dev-master": "2.7-dev"
        }
    },
    "installation-source": "dist",
    "autoload": {
        "psr-4": {
            "Symfony\\Component\\Yaml\\": ""
        }
    },
    "notification-url": "https://packagist.org/downloads/",
    "license": [
        "MIT"
    ],
    "authors": [
        {
            "name": "Fabien Potencier",
            "email": "fabien@symfony.com"
        },
        {
            "name": "Symfony Community",
            "homepage": "https://symfony.com/contributors"
        }
    ],
    "description": "Symfony Yaml Component",
    "homepage": "https://symfony.com"
},
{
    "name": "symfony/console",
    "version": "v2.7.0",
    "version_normalized": "2.7.0.0",
    "source": {
        "type": "git",
        "url": "https://github.com/symfony/Console.git",
        "reference": "7f0bec04961c61c961df0cb8c2ae88dbfd83f399"
    },
    "dist": {
        "type": "zip",
        "url": "https://api.github.com/repos/symfony/Console/zipball/7f0bec04961c61c961df0cb8c2ae88dbfd83f399",
        "reference": "7f0bec04961c61c961df0cb8c2ae88dbfd83f399",
        "shasum": ""
    },
    "require": {
        "php": ">=5.3.9"
    },
    "require-dev": {
        "psr/log": "~1.0",
        "symfony/event-dispatcher": "~2.1",
        "symfony/phpunit-bridge": "~2.7",
        "symfony/process": "~2.1"
    },
    "suggest": {
        "psr/log": "For using the console logger",
        "symfony/event-dispatcher": "",
        "symfony/process": ""
    },
    "time": "2015-05-29 16:22:24",
    "type": "library",
    "extra": {
        "branch-alias": {
            "dev-master": "2.7-dev"
        }
    },
    "installation-source": "dist",
    "autoload": {
        "psr-4": {
            "Symfony\\Component\\Console\\": ""
        }
    },
    "notification-url": "https://packagist.org/downloads/",
    "license": [
        "MIT"
    ],
    "authors": [
        {
            "name": "Fabien Potencier",
            "email": "fabien@symfony.com"
        },
        {
            "name": "Symfony Community",
            "homepage": "https://symfony.com/contributors"
        }
    ],
    "description": "Symfony Console Component",
    "homepage": "https://symfony.com"
},
{
    "name": "neoxygen/neoclient",
    "version": "2.2.3",
    "version_normalized": "2.2.3.0",
    "source": {
        "type": "git",
        "url": "https://github.com/neoxygen/neo4j-neoclient.git",
        "reference": "f7fc5f76c1273bfe7b7346cac29272dac3142ea2"
    },
    "dist": {
        "type": "zip",
        "url": "https://api.github.com/repos/neoxygen/neo4j-neoclient/zipball/f7fc5f76c1273bfe7b7346cac29272dac3142ea2",
        "reference": "f7fc5f76c1273bfe7b7346cac29272dac3142ea2",
        "shasum": ""
    },
    "require": {
        "guzzlehttp/guzzle": "4.*",
        "monolog/monolog": "~1.1",
        "php": ">= 5.4",
        "symfony/config": "~2.5",
        "symfony/console": "~2.5",
        "symfony/dependency-injection": "~2.5",
        "symfony/event-dispatcher": "~2.5",
        "symfony/yaml": "~2.5"
    },
    "require-dev": {
        "behat/behat": "~3.0",
        "bossa/phpspec2-expect": "*",
        "phpspec/phpspec": "~2.0",
        "phpunit/phpunit": "4.*"
    },
    "time": "2015-06-05 18:12:15",
    "type": "library",
    "extra": {
        "branch-alias": {
            "dev-master": "2.1-dev"
        }
    },
    "installation-source": "dist",
    "autoload": {
        "psr-4": {
            "Neoxygen\\NeoClient\\": "src/"
        }
    },
    "notification-url": "https://packagist.org/downloads/",
    "license": [
        "MIT"
    ],
    "authors": [
        {
            "name": "Christophe Willemsen",
            "email": "chris@neoxygen.io"
        }
    ],
    "description": "NeoClient is the most advanced Http Client for Neo4j",
    "homepage": "http://neoxygen.io",
    "keywords": [
        "client",
        "cluster",
        "graph",
        "high-availibility",
        "neo4j"
    ]
}

]

tarun14110
  • 940
  • 5
  • 26
  • 57
  • 1
    And what have you tried? Where is your code? – SuperDJ Jun 08 '15 at 09:41
  • 1
    http://neo4j.com/developer/php/ – PatrikAkerstrand Jun 08 '15 at 09:43
  • I do not know how to query Neo4j database from php. I have not written any code. As I am not able to setup connection between php and Neo4j database. – tarun14110 Jun 08 '15 at 09:44
  • 1
    Check the page @PatrikAkerstrand sent you, there are links to 3 big articles I wrote about how to use Neo4j and PHP – Christophe Willemsen Jun 08 '15 at 09:55
  • @ChristopheWillemsen articles were awesome , but the examples were little complex for me to understand. May you give a basic php script (creating 2 nodes and relationship b/w them,and than displaying displaying the match query result on screen ) . It will help me a lot. – tarun14110 Jun 08 '15 at 11:05
  • I am confused about to to create client with this package. What is code with dummy user, password, and database name? https://github.com/laudis-technologies/neo4j-php-client#roadmap – Brian Wiley Dec 31 '20 at 19:08

2 Answers2

1

As a quick start guide, using NeoClient is much like using Cypher, except you use the client method to send it :

Set Up The Client

Assuming you use 2.2 and your password is "password" :

<?php

require_once(__DIR__.'/vendor/autoload.php');

use Neoxygen\NeoClient\ClientBuilder;

$client = ClientBuilder::create()
->addConnection('default','http','localhost',7474,true,'neo4j','password')
->setAutoFormatResponse(true)
->build();

You can then send Cypher Queries with the client :

Sending Cypher

CREATING A NODE

$query = 'CREATE (user:User {name:"john"})';
$client->sendCypherQuery($query);

RETRIEVING THE NODE

$query = 'MATCH (user:User {name:"john"}) RETURN user';
$result = $client->sendCypherQuery()->getResult();
// accessing the user identifier (so the user node) from the result
$john = $result->get('user');

Managing Node objects

// The $john is a wrapped Node object and have some methods

// The node id
echo $john->getId();
// The labels
print_r($john->getLabels());
// The properties
echo $john->getProperty('name');

CREATING RELATIONSHIPS (with Cypher)

$query = 'MATCH (user:User {name:"john"})
CREATE (friend:User {name:"Judith"})
MERGE (user)-[r:FRIEND]->(friend)
RETURN user, friend, r';
$result = $client->sendCypherQuery($q)->getResult();

$john = $result->get('user');
$judith = $result->get('judith');

// What john has for relationships

print_r($john->getRelationships()); // returns relationships objects

// Get a node connected to john

print_r($john->getConnectedNode());

I think the README of the NeoClient repository is very much documentend, so I'll not rewrite everything here.

Christophe Willemsen
  • 19,399
  • 2
  • 29
  • 36
0

The page on Neo4J http://neo4j.com/developer/php/ has some links to PHP libraries you can use to interact with Neo4J.

For example, you could install this one here: https://github.com/neoxygen/neo4j-neoclient

You should read their intro on GitHub page that explains how to install it and how to make connection with the database (you can simply copy and paste their sample code).

After you've done this, you can then perform queries like

$q = 'MATCH (n:Actor) RETURN n.name';
$client->sendCypherQuery($q);
$result = $client->getRows();`

using Cypher that you already know from your PHP code.

If you want something even easier than that, try another library: just follow the instructions on https://github.com/neo4j-contrib/developer-resources/tree/gh-pages/language-guides/php/neo4jphp which is an example of a functioning PHP to Neo4J app.

Do everything as they say and then simply change the queries inside to the ones you need. This way you'll have your own PHP app without writing a line of PHP, if you find it difficult to use it.

Aerodynamika
  • 7,883
  • 16
  • 78
  • 137