2016-11-30 73 views
0

如何在兩個不同的數據庫中運行Laravel中的簡單Mysql查詢?Laravel 5.3上的不同數據庫中的雄辯連接和查詢

SELECT * FROM database1.table1, database2.table2 

我該如何在不同的數據庫上進行Eloquent連接?

+0

https://laravel.com/docs/5.3/queries#joins – Hackerman

+0

Hackerman - 多個數據庫?我不這麼認爲...... –

+1

如果數據庫位於同一臺服務器上,並且mysql用戶可以訪問這兩個數據庫,那麼您應該可以在沒有任何問題的情況下執行此操作。你可能只需要使用'DB :: raw' – aynber

回答

3

,:

$result = DB::connection('database1')->table('contacts')->get() 
      ->union(
       DB::connection('database2')->table('contacts')->get() 
      ); 

如果你的查詢生成器是不返回集合數據庫位於同一臺服務器上,並且mysql用戶可以訪問這兩個數據庫,您可以通過DB::raw

$q1 = DB::table(DB::raw('database1.table1 AS db1_tb1'))->select('*'); 
$results = DB::table(DB::raw('database2.table2 AS db2_tb2'))->select('*') 
->union($q1) 
->get(); 

對於加盟:

DB::table(DB::raw('database1.table1 AS db1_tb1')) 
    ->join(DB::raw('database2.table2 AS db2_tb2'),'db1_tb1.first_key','=','db2_tb2.second_key') 
2

不能使用不同的連接要做到這一點,所以你應該這樣做:如果正如我所提到

$result = collect(DB::connection('database1')->table('contacts')->get()) 
      ->union(
       collect(DB::connection('database2')->table('contacts')->get()) 
      ); 
+0

好的,謝謝!以及如何在多數據庫中進行JOIN?只需手動? –