2016-09-22 98 views
0

我有2個不同的數據庫,我想在這些數據庫內部連接2個表。LARAVEL如何連接2個不同的數據庫並加入2個位於不同服務器上的表?

我知道這不是最好的做法,但我需要找到一種方法來與LARAVEL做到這一點。

我可以通過打開2個連接與普通PHP做到這一點。但我正在尋找與laravel做到這一點的方式。

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

添加另一個連接是解決方案,但如何在兩個不同的服務器中使用兩個數據庫進行一次內部連接查詢?

+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數據庫製作ELOQUENT QUERY,並與table_id結合。 –

相關問題