如何在Laravel 5.x中将多个集合合并为单个集合


How to combine multiple collections into single collection in Laravel 5.x?

我正在使用Laravel 5.3和mariaDB 10.1.x。

我有几个SQL查询,将用于一个报表表。我希望使用多个查询(每个查询都不是那么简单),而不是为了维护而使用一个复杂的单个查询。

我想做的是从每个查询中获得集合格式的结果,并将这些结果与单个集合结合起来,例如来自一个大查询的集合。

(1)收集第一个查询

$a = DB::table('first_name')->where(...)->join(...)->leftJoin(...)->get();
result
-----------------------
primary_key  first_name
    1           John
    2           Mary 
-----------------------

(2) collection from second query.

$b = DB::table('last_name')->where(...)->join(...)->leftJoin(...)->get();
Result
-----------------------
primary_key  last_name
    1           Doe
    2           Jane 
-----------------------

(3)我想要的集合(combine (1) + (2) using primary_key)

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

谢谢你的帮助。

这个怎么样?我不确定这是否是最好的方法:

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

我没有看到任何辅助方法做键合并虽然,不确定我是否读对了