2016-10-30 78 views
2

我正在使用Laravel 5.3和mariaDB 10.1.x.如何將多個集合合併到Laravel 5.x中的單個集合中?

我有幾個SQL查詢將用於一個報表。我想使用多個查詢(每個查詢都不那麼簡單),而不是一個用於維護目的的複雜單個查詢。

我想要做的是從每個查詢獲得結果到收集格式,並將這些結果與單個集合結合使用,如從一個大查詢中收集。

(1)從第一個查詢集合

$a = DB::table('first_name')->where(...)->join(...)->leftJoin(...)->get(); 

result 
----------------------- 
primary_key first_name 
    1   John 
    2   Mary 
----------------------- 

(2)從第二查詢集合。

$b = DB::table('last_name')->where(...)->join(...)->leftJoin(...)->get(); 

Result 
----------------------- 
primary_key last_name 
    1   Doe 
    2   Jane 
----------------------- 

(3)收集,我想(組合(1)+(2)使用primary_key)

----------------------------------- 
primary_key first_name last_name 
    1   John  Doe 
    2   Mary  Jane 
----------------------------------- 

謝謝您的幫助。

+0

你有沒有想出解決辦法? – windsor

回答

0

這個怎麼樣?不知道這是雖然是最好的方法:

$keyedA = $a->keyBy('primary_key')->all(); 
$keyedB = $b->keyBy('primary_key')->all(); 
$combined = array_merge_recursive($keyedA, $keyedB); 

我沒有看到任何輔助方法做的關鍵合併雖然,不知道我是否已經正確讀取

+0

謝謝你的回覆,我不認爲我詳細解釋了情況,但A擁有所有的主鍵但是B並不總是擁有所有的鍵,它可能有丟失的鍵(意味着缺少行A) 例如,A的主鍵在另一隻手中是1,2,3 .B的主鍵僅爲1,2。 所以這意味着B應該像SQL中的'Left Outer Join'那樣工作。 –

相關問題