2016-09-22 27 views
0

나는 2 개의 다른 데이터베이스가 있고이 데이터베이스의 2 개의 테이블을 내부 조인하고 싶습니다.LARAVEL 2 개의 다른 데이터베이스를 연결하고 다른 서버에있는 2 개의 테이블을 결합하는 방법은 무엇입니까?

이것이 최선의 방법은 아니지만 LARAVEL로이를 수행 할 방법을 찾아야한다는 것을 알고 있습니다.

2 개의 connectios를 열어 일반 PHP로이 작업을 수행 할 수 있습니다. 그러나 나는 이것을 laravel로하는 방법을 찾고 있습니다.

$ users = DB :: connection ('mysql2') -> select (...); '

다른 연결을 추가하는 것이 해결책이지만 하나의 내부 조인 쿼리에서 2 개의 다른 서버에서 2 개의 데이터베이스를 어떻게 사용합니까?

+0

간단합니다. 너는 할 수 없어 – e4c5

답변

1

이미지가 서로 다른 엔티티로 작업하고 있으므로 연결 이름으로 protected $connection 속성을 정의하여 모델에서 각각의 연결을 지정하면됩니다.

config/database.php에 정의하여 새 연결을 만들 수 있습니다. 이처럼

:

class Model_One extends Entity 
{ 
    protected $connection = "database_one"; 

    [...] 

class Model_Two extends Entity 
{ 
    protected $connection = "database_two"; 

    [...] 
'connections' => [ 

    'database_one' => [ 
     'driver' => 'mysql', 
     'host'  => env('DB_ONE_HOST', 'host_one'), 
     'port'  => env('DB_ONE_PORT', 3306), 
     'database' => env('DB_ONE_DATABASE', 'database_one'), 
     'username' => env('DB_ONE_USERNAME', 'username'), 
     'password' => env('DB_ONE_PASSWORD', 'secret'), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => env('DB_ONE_PREFIX', ''), 
     'timezone' => env('DB_ONE_TIMEZONE', '+00:00'), 
     'strict' => false, 
    ], 

    'database_two' => [ 
     'driver' => 'mysql', 
     'host'  => env('DB_TWO_HOST', 'host_two'), 
     'port'  => env('DB_TWO_PORT', 3306), 
     'database' => env('DB_TWO_DATABASE', 'database_two'), 
     'username' => env('DB_TWO_USERNAME', 'homestead'), 
     'password' => env('DB_TWO_PASSWORD', 'secret'), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => env('DB_TWO_PREFIX', ''), 
     'timezone' => env('DB_TWO_TIMEZONE', '+00:00'), 
     'strict' => false, 
    ] 
], 
+0

나는 2 데이터베이스로 어떻게 QUALY를 만들고, table_id로 어떻게 가입하는지, 설치하는 법에 대해 물어 보지 않았다. –