2017-12-07 20 views
0

Laravel 5.5で複数のデータベースを接続したい。私はthisを使ってみましたが、うまくいかないようです。グラフDBに接続するクライアントとしてhttps://github.com/graphaware/neo4j-php-clientを使用したいのですが、私がこれを使用したかったのは、cypherクエリーを直接実行するためでした。laravelでグラフDBとSQLを接続

このような条件に対応するためにconfig/database.phpにどのような変更を加え、コードから各データベースにアクセスするにはどうすればよいですか?

答えて

0

あなたは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.phpproviders配列にこれを追加し、アプリケーション内でプロバイダを登録ファイル:

App\Providers\Neo4jServiceProvider::class, 

neo4j dbsの接続パラメータを.envファイルに追加します。

次は、どこでも、このサービスを注入し、任意の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'); 
} 
関連する問題