2016-10-30 8 views
2

Ich benutze Laravel 5.3 mit mariaDB 10.1.x.Wie kombinieren Sie mehrere Sammlungen in einer einzigen Sammlung in Laravel 5.x?

Ich habe mehrere SQL-Abfragen, die für eine Berichtstabelle verwendet werden. Ich würde gerne mehrere Abfragen verwenden (jede Abfrage ist überhaupt nicht so einfach) statt einer einzigen komplexen Abfrage zu Wartungszwecken.

was ich tun möchte, ist es, Ergebnisse von jeder Abfrage zum Sammlungsformat zu erhalten und diese mit einer einzigen Sammlung wie die Sammlung aus einer großen Abfragen zu kombinieren.

(1) aus dem ersten Sammlung Abfrage

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

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

(2) Sammlung von zweiter Abfrage.

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

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

(3) Sammlung, die ich will (kombinieren (1) + (2) mit primary_key)

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

Dank für Ihre Hilfe danken.

+0

Haben Sie jemals herausgefunden? – windsor

Antwort

0

Wie wäre es damit? Nicht sicher, ob dies die beste Methode ist aber:

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

Ich sehe keine Hilfsmethoden machen die Schlüssel übergeht aber nicht sicher, ob ich es richtig gelesen habe

+0

Vielen Dank für Ihre Antwort, ich denke nicht, dass ich die Situation im Detail erklären, aber A haben alle Primärschlüssel, aber B hat nicht immer alle Schlüssel, es kann möglicherweise fehlende Schlüssel haben (bedeutet fehlende Zeilen im Vergleich mit A) Zum Beispiel sind die Primärschlüssel für A 1,2,3. Die Primärschlüssel für B sind nur 1,2. Das bedeutet also, dass B in SQL wie "Left Outer Join" funktionieren sollte. –

Verwandte Themen