【问题标题】:Connect graph DB and SQL in laravel在 laravel 中连接图形数据库和 SQL
【发布时间】:2017-12-07 07:16:09
【问题描述】:

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

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

【问题讨论】:

    标签: php neo4j graph-databases laravel-5.5


    【解决方案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();
            });
        }
    }
    

    然后在应用程序中注册提供程序,将其添加到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'); 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 2018-09-09
      相关资源
      最近更新 更多