У меня есть один JSON, как:
[
{
"id": 1,
"order_id": 1,
"product_id": 2,
"quantity": "15.00",
"created_at": "2019-03-19 10:02:40",
"products": [
{
"id": 2,
"name": "24 mantra",
"sale_price": "45.00"
}
]
},
{
"id": 3,
"order_id": 2,
"product_id": 2,
"quantity": "15.00",
"created_at": "2019-03-19 10:16:15",
"products": [
{
"id": 2,
"name": "24 mantra",
"sale_price": "45.00"
}
]
},
{
"id": 5,
"order_id": 3,
"product_id": 2,
"quantity": "15.00",
"created_at": "2019-03-19 10:16:19",
"products": [
{
"id": 2,
"name": "24 mantra",
"sale_price": "45.00"
}
]
},
{
"id": 2,
"order_id": 1,
"product_id": 3,
"quantity": "3.00",
"created_at": "2019-03-19 10:02:40",
"products": [
{
"id": 3,
"name": "24 Mantra Jowar Atta 2LB",
"sale_price": "45.00"
}
]
},
{
"id": 4,
"order_id": 2,
"product_id": 3,
"quantity": "3.00",
"created_at": "2019-03-19 10:16:16",
"products": [
{
"id": 3,
"name": "24 Mantra Jowar Atta 2LB",
"sale_price": "45.00"
}
]
}
]
Теперь я хочу рассчитать общую продажу как количество, умноженное на продукт sale_price
каждого объекта и сумму quantity * sale_price
на продукт.
ожидаемый результат
[
{
"product": "24 mantra",
"sale": 2025
},
{
"product": "24 Mantra Jowar Atta 2LB",
"sale": 270
}
]
код для вывода
$orderlines = OrderLine->with('products:id,name,sale_price')->select('id','order_id','product_id','quantity','created_at')->get();
$orderlines = $orderlines->groupBy('product_id');
$totalproductsale = [];
foreach($orderlines as $key => $singleline) {
$total_bysales = 0.00;
foreach($singleline as $singleproduct) {
$total_bysales += $singleproduct->quantity * $singleproduct->sale_price;
}
array_push($totalproductsale,array("product" => $singleline['0']->products['0']->name,"totalsale" => number_format($total_bysales, 2, '.', '')));
$totalsale[$key] = number_format($total_bysales, 2, '.', '');
}
Я хочу получить общую продажу и название продукта в одном объекте, для этого я использовал цикл foreach
, но он очень трудоемкий, у меня есть 100 000 данных на рабочий сервер. Загрузка только 30к данных в график занимает 15 секунд. как я могу сократить время итерации или использовать другие альтернативы?