2

我正在做一个需要在图形数据库上工作的项目。所以我学习了 Neo4j(密码语言)的基础知识。但我不知道如何从 php 访问/查询数据库。或者建议我使用其他任何方式来处理图形数据库。

帮助将不胜感激。

作曲家.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"
    ]
}

]

4

2 回答 2

1

作为快速入门指南,使用 NeoClient 与使用 Cypher 非常相似,不同之处在于您使用客户端方法发送它:

设置客户端

假设您使用 2.2 并且您的密码是 "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();

然后,您可以使用客户端发送 Cypher 查询:

发送密码

创建节点

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

检索节点

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

管理节点对象

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

创建关系(使用 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());

我认为NeoClient 存储库的 README非常有文档,所以我不会在这里重写所有内容。

于 2015-06-08T12:33:02.303 回答
0

Neo4J 上的页面http://neo4j.com/developer/php/有一些指向 PHP 库的链接,您可以使用这些链接与 Neo4J 进行交互。

例如,你可以在这里安装这个:https ://github.com/neoxygen/neo4j-neoclient

您应该阅读他们在 GitHub 页面上的介绍,其中解释了如何安装它以及如何与数据库建立连接(您可以简单地复制并粘贴他们的示例代码)。

完成此操作后,您可以执行以下查询

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

使用您从 PHP 代码中已经知道的 Cypher。

如果您想要比这更简单的东西,请尝试另一个库:只需按照https://github.com/neo4j-contrib/developer-resources/tree/gh-pages/language-guides/php/neo4jphp上的说明进行操作即可运行 PHP 到 Neo4J 应用程序的示例。

按照他们说的做所有事情,然后简单地将内部的查询更改为您需要的查询。这样,如果您发现难以使用它,您将拥有自己的 PHP 应用程序,而无需编写一行 PHP。

于 2015-06-08T12:26:24.453 回答