我正在尝试组合/加入两个(最好是更多)查询结果。然后选择性地在我的刀片视图中,在表中显示它,仅选择几个列/属性。我正在尝试在Laravel,雄辩/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中等效的"(右)加入"。列"名称"one_answers"数字"相同。坦率地说,这些收集或阵列方法及其组合似乎都没有用。我非常感谢任何帮助。
ps。另外,如果有人碰巧知道我如何从特定查询中的列中获得一笔价值,而不是使用selectraw,我会欣喜若狂。
我与查询构建器进行了多个加入。
这是我的代码:
$result = DB::table('sub_categories')->join('categories', 'sub_categories.category_id', '=', 'categories.id')
->join('main_categories', 'main_categories.id', '=', 'categories.main_category_id')
->where([['main_categories.text', '=', $mainCategory], ['categories.text', '=', $category], ['sub_categories.text', '=', $subCategory]])
->select('sub_categories.id as subject_id')->get();
这可能会有所帮助:
$result = DB::table('users')->where([['users.user_id', $userId], ['ad_is_verified', true]])
->join('ads', 'ads.user_id', '=', 'users.user_id')
->where('ads.ad_id', '=', $addId)->get();