【发布时间】:2018-02-24 15:30:35
【问题描述】:
我正在尝试合并/加入两个(最好是更多)查询的结果。然后有选择地在我的刀片视图中的表格中显示它,只选择几列/属性。我正在尝试在 Laravel、eloquent/querybuilder 中执行此操作(我可以在纯 sql 中执行此操作,但这当然不是重点),因为它将使用多个数据库和表,可能在多个服务器上。 重点:这里有一些代码:
$query1 = Documents::join('warehouses', 'analyticsData.documents.warehouse', '=', 'analyticsData.warehouses.id')
->selectRaw(
' analyticsData.warehouses.name name,
analyticsData.documents.warehouse number,
SUM(analyticsData.documents.value) takings1'
)
->whereIn('analyticsData.documents.type', [1, 4, 5])
->whereDate('date', '>=', '2016-09-05')
->whereDate('date', '<=', '2016-09-10')
->limit('5000')
->groupBy('name1')
->get();
$query2 = Documents::join('warehouses', 'analyticsData.documents.warehouse', '=', 'analyticsData.warehouses.id')
->selectRaw(
' analyticsData.warehouses.name name,
analyticsData.documents.warehouse number,
SUM(analyticsData.documents.value) takings2')
->whereIn('analyticsData.documents.type', [1, 4, 5])
->whereDate('date', '>=', '2017-09-04')
->whereDate('date', '<=', '2017-09-09')
->limit('5000')
->groupBy('name1')
->get();
然后,通过 foreach 循环,我想在刀片的表格中的屏幕上显示选定的结果列。 实际上,我已经使用了几天,并尝试将结果作为数组与 array_merge 合并,但它只是将一个数组附加到另一个数组的末尾。我需要相当于 SQL 中的“(右)加入”。 “名称”和“编号”列是相同的。 坦率地说,集合或数组方法及其组合似乎都不起作用。 我将非常感谢任何帮助。
附言。此外,如果有人碰巧知道我如何不能从特定查询中的列中获取值的总和,而不是使用 selectRaw,我会欣喜若狂。
【问题讨论】:
-
你能合并吗?有什么问题?
-
我不能使用'combine',因为数组(如果我将它们转换成数组)是不均匀的。我需要一个完全等同于 sql 'join' 的东西。或者是一种正确显示它的方法 - 一列紧挨着另一列。
-
明确一点:array_combine():两个参数应该有相同数量的元素