2017-12-07 3 views
0

Laravel 5.5에서 여러 데이터베이스를 연결하고 싶습니다. this을 사용해 보았지만 작동하지 않는 것 같습니다. 그래프 DB에 연결하기 위해 클라이언트로 https://github.com/graphaware/neo4j-php-client을 사용하고 싶습니다. 제가 이것을 원했던 이유는 사이퍼 쿼리를 직접 실행하기 위해서였습니다.laravel에서 그래프 DB와 SQL을 연결하십시오

이러한 조건을 수용하기 위해 config/database.php에서 어떤 변경을해야하며 코드에서 각 데이터베이스에 어떻게 액세스합니까?

답변

0

당신은 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.phpproviders 배열이 추가 파일 :

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