Я пытаюсь получить объединенный массив из результата запроса двух или более запросов. Решение, которое я пробовал до сих пор, дано ниже.
Создала одну переменную $total_records
и повторила ее снова в цикле foreach
, чтобы получить второй набор вывода данных. Теперь я хочу объединить вывод № 2 с выводом № 1, полученным на первом месте в total_records
Есть запрос № 1:
$total_records = RatioStatistics::where('type', '=', 'group')
->whereBetween('date', [$modified_start_date, $modified_end_date])
->join('cart_abondon_group', 'statistics.ref_id', '=', 'cart_abondon_group.id')
->select('statistics.*', 'cart_abondon_group.name')
->orderBy('statistics.ref_id', 'ASC')
->orderBy('statistics.date', 'ASC')
->get();
Вывод № 1:
[{
"id": 324985,
"ref_id": 1,
"date": "2019-01-02T00:00:13+00:00",
"total": 434,
"available": 164,
"rented": 270,
"unusable": 0
},
{
"id": 325602,
"ref_id": 1,
"date": "2019-01-03T00:00:16+00:00",
"total": 427,
"available": 176,
"rented": 251,
"unusable": 0
}]
Есть еще один запрос №2:
foreach ($total_records as $record) {
$data = [
'total_number_of_cart_abondon_of_the_day' => Cart::where('created_at', 'like', $record['date']->format('Y-m-d') . '%')
->whereNotIn('status_id', [11])
->whereHas('product', function ($q) use ($record) {
$q->where('group_id', $record['ref_id']);
})
->count(),
'total_number_of_cart_abondon_per_day_per_warehouse_user' => Cart::where('created_at', 'like', $record['date']->format('Y-m-d') . '%')
->where('warehouse_user', 1)
->whereNotIn('status_id', [11])
->whereHas('product', function ($q) use ($record) {
$q->where('group_id', $record['ref_id']);
})
->count()
];
$new_stats[] = $data;
}
Вывод 2:
"0": {
"total_number_of_cart_abondon_of_the_day": 27,
"total_number_of_cart_abondon_per_day_per_warehouse_user": 0
},
"1": {
"total_number_of_cart_abondon_of_the_day": 30,
"total_number_of_cart_abondon_per_day_per_warehouse_user": 0
}
Запрошенный вывод:
- Либо у меня будетсоздать такое решение, чтобы мы могли запрашивать все через первый запрос, не выполняя второй.
- Или сделать второй запрос более оптимизированным, чтобы выходные данные № 2 могли быть объединены в выходные данные # 1
Правильный желаемый вывод:
[{
"id": 324985,
"ref_id": 1,
"date": "2019-01-02T00:00:13+00:00",
"total": 434,
"available": 164,
"rented": 270,
"unusable": 0,
"total_number_of_cart_abondon_of_the_day": 27,
"total_number_of_cart_abondon_per_day_per_warehouse_user": 0
}, {
"id": 325602,
"ref_id": 1,
"date": "2019-01-03T00:00:16+00:00",
"total": 427,
"available": 176,
"rented": 251,
"unusable": 0,
"total_number_of_cart_abondon_of_the_day": 30,
"total_number_of_cart_abondon_per_day_per_warehouse_user": 0
}]