laravel - 为每个查询选择union - 设置数组键

时间:2016-11-30 02:49:34

标签: php sql laravel union

我在使用laravel 5.2中的unionAll()从多个表中选择特定字段时遇到问题。

这是我正在做的一个例子:

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

所以在这个例子中它将返回一个包含一堆结果的数组,这个问题在创建数组时出现。

每个子数组的键都是示例,而不是第一个表结果的示例,第二个表结果的example2和第三个表结果的example3。

我需要使用有效的密钥返回,例如:

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

但正如我所说,我的union语句似乎只返回所有子数组的第一个示例和时间戳键,如下所示:

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

1 个答案:

答案 0 :(得分:0)

试试这个:

{{1}}

reference