2016-11-30 11 views
1

laravel 5.2でunionAll()を使用して複数のテーブルから特定のフィールドを選択する際に問題が発生しています。laravel - 各クエリのユニオン設定配列キー

これは私がやっているものの例である:

$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(); 

をしたがって、この例では、それは結果の束を持つ配列を返します、問題は、アレイが作成されたときに入っています。

最初のテーブル結果の例ではなく、2番目のテーブル結果のexample2と3番目のテーブル結果のexample3ではなく、すべてのサブ配列のキーが例になります。

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

しかし、私が言ったように、私の労働組合の文は、このようなすべてのサブアレイに対してのみ最初の例とタイムスタンプキーを返すように見える:

は、私はそれはのような有効なキーで返さ必要

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

これをチェックしてくださいhttp://stackoverflow.com/questions/25924592/laravel-multiple-unions – Sachith

+1

私の質問に関連する情報がどこにあるのか分かりません。あなたは私にどのような応答または同様のものを指摘できますか?私のユニオンステートメントは正常に動作し、エラーなどはないことに留意してください。配列キーがどのように定義されているのか、問題があります。 –

+0

'$ test1'はその実行時に値を持っていますか? – Sachith

答えて

0

これを試してみてください:

$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にunionAllメソッドがありません。 –

+0

あなたはビルドをしているか、unionAll()またはunion()の前にビルドされたクエリステートメントを置いています。 krisが述べたように、$ testArrayはビルドされたクエリではないので、 - > unionAll()を利用することはできません。 –

関連する問題