Php 在laravel中连接图数据库和SQL

Php 在laravel中连接图数据库和SQL,php,neo4j,graph-databases,laravel-5.5,Php,Neo4j,Graph Databases,Laravel 5.5,我想在Laravel 5.5中连接多个数据库。我试过使用,但似乎不起作用。我想作为一个客户端连接到graph DB,我想使用它的原因是直接运行cypher查询 我应该在config/database.php中进行哪些更改以适应这种情况,以及如何从代码中访问每个数据库?您可以创建一个自定义提供程序,例如在App\Providers\Neo4jServiceProvider.php中,并定义两个或更多到客户端的连接: class Neo4jServiceProvider extends Servic

我想在Laravel 5.5中连接多个数据库。我试过使用,但似乎不起作用。我想作为一个客户端连接到graph DB,我想使用它的原因是直接运行cypher查询


我应该在config/database.php中进行哪些更改以适应这种情况,以及如何从代码中访问每个数据库?

您可以创建一个自定义提供程序,例如在
App\Providers\Neo4jServiceProvider.php
中,并定义两个或更多到客户端的连接:

class Neo4jServiceProvider extends ServiceProvider
{
    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton(Client::class, function() {
            return ClientBuilder::create()
                ->addConnection('server1', getenv('NEO4J_1_HOST'))
                ->addConnection('server2', getenv('NEO4J_2_HOST'))
                ->build();
        });
    }
}
然后在应用程序中注册提供者,将其添加到
config/app.php
文件的
providers
数组中:

App\Providers\Neo4jServiceProvider::class,
在.env文件中添加neo4j数据库的连接参数

接下来,您可以在任何地方插入此服务并查询任何数据库:

class MyController
{

  private $client;

  public function __construct(Client $client)
  {
    $this->client = $client;
  }

  public function doSomeQueries()
  {
    // Query DB 1
    $result = $this->client->run('MATCH (n) RETURN count(n)', null, null, 'server1'); 
    // Query DB 2
    $result2 = $this->client->run('MATCH (n) RETURN count(n)', null, null, 'server2'); 
}