2016-11-30 2 views
1

ich bei der Auswahl spezifische Felder aus mehreren Tabellen ein Problem habe mit unionAll() in Laravel 5.2. Laravel - wähle union - Einstellung Array-Schlüssel für jede Abfrage

Dies ist ein Beispiel dafür, was ich tue:

$test1 = \DB::table('test1')->select('test1.first as example', 'test1.timestamp')->orderBy('timestamp', 'desc'); 
$test2 = \DB::table('test2')->select('test2.second as example2', 'test2.timestamp')->orderBy('timestamp', 'desc'); 
$test3 = \DB::table('test3')->select('test3.third as example3', 'test3.timestamp')->orderBy('timestamp', 'desc'); 

$testArray = $test1->unionAll($test2)->unionAll($test3)->get()->toArray(); 

So in diesem Beispiel wird ein Array mit einem Bündel von Ergebnissen zurückkommen würde, das Problem kommt, wenn das Array erstellt wird.

Der Schlüssel für jede Subarray wird beispielsweise sein, eher als Beispiel für die erste Tabelle, die Ergebnisse, example2 für die zweite Tabelle, die Ergebnisse und example3 für dritte Tabelle, die Ergebnisse.

Ich brauche es mit einem gültigen Schlüssel zurückgegeben, wie:

[{"example: test1", "timestamp: 11-22-33"}{"example2: test2", "timestamp: 11-22-33"}{"example3: test3", "timestamp: 11-22-33"}] 

Aber wie gesagt, scheinen meine Vereinigung Aussagen nur das erste Beispiel und Zeitstempel Schlüssel für alle Subarrays wie diese Rückkehr zu:

[{"example: test1", "timestamp: 11-22-33"}{"example: test2", "timestamp: 11-22-33"}{"example: test3", "timestamp: 11-22-33"}] 
+0

Überprüfung dieses http://stackoverflow.com/questions/25924592/laravel-multiple-unions – Sachith

+1

Sie wissen nicht, wo in diesem Posten Informationen in Bezug auf meine Frage hat. Kannst du mir auf welche Antwort oder ähnliches hinweisen? Denken Sie daran, meine gewerkschaftlichen Anweisungen funktionieren gut, keine Fehler etc, es ist nur, wie der Array-Schlüssel definiert ist, mit dem ich ein Problem habe. –

+0

hat '$ test1' Werte wenn es ausgeführt wird? – Sachith

Antwort

0

Versuchen Sie folgendes:

$test1 = \DB::table('test1')->select('test1.first as example', 'test1.timestamp')->orderBy('timestamp', 'desc'); 
$test2 = \DB::table('test2')->select('test2.second as example2', 'test2.timestamp')->orderBy('timestamp', 'desc'); 
$test3 = \DB::table('test3')->select('test3.third as example3', 'test3.timestamp')->orderBy('timestamp', 'desc'); 

$testArray = $testArray->unionAll($test1)->unionAll($test2)->unionAll($test3); 

$arrays = $testArray->get()->toArray(); 

reference

+1

$ testArray hat nicht die unionAll-Methode. –

+0

Ya, Sie haben eine Build-Abfrage oder eine Abfrage-Anweisung vor unionAll() oder union(), glaube ich. Wie Kris gesagt hat, kann $ testArray -> unionAll() nicht verwenden, da es keine eingebaute Abfrage ist. –