在laravel中连接图形DB和SQL

问题描述 投票:0回答:1

我想在Laravel 5.5中连接多个数据库。我尝试使用this,但它似乎不起作用。我想使用https://github.com/graphaware/neo4j-php-client作为客户端连接到图形DB,我想使用它的原因是直接运行cypher查询。

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

php neo4j graph-databases laravel-5.5
1个回答
1
投票

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

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

然后在应用程序中注册提供程序,将其添加到providers文件的config/app.php数组中:

App\Providers\Neo4jServiceProvider::class,

在.env文件中添加neo4j dbs的连接参数。

接下来,您可以在任何地方注入此服务并查询任何db:

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'); 
}
© www.soinside.com 2019 - 2024. All rights reserved.