我有一个循环,其中每一步我都获得当天的价格。现在,我想获取所有天数的总和并将其显示给用户。这是我的以下尝试:
for ($f = 0; $f < count($room_ids); $f++) {
$data = Price::whereIn('id',$room_ids)
->whereDate('from_date', '<', $from_date)
->whereDate('to_date', '> ', $to_date)
->orderBy('created_at', 'asc')
->take(1)
->get();
// $sum_price += array_sum($data[$f]->sales_price)
//or this one
// $sum_price += $data[$f];
$data_array[] = $data[$f]->sales_price.'======'.$dates[$i].'==============' ;
}
但是,每次我得到1天的价格时,就不会得到所有天数的总和。我该如何实现?
答案 0 :(得分:2)
您可以在Laravel Eloquent中使用sum函数。请检查here了解详情。
$sum_price = 0;
$data = Price::
whereIn('id',$room_ids)
->whereDate('from_date', '<', $from_date)
->whereDate('to_date', '> ', $to_date)
->orderBy('created_at', 'asc')
->sum('price');
$sum_price = $data[0];
echo $sum_price; // This will give you total price.
答案 1 :(得分:2)
$sum_price = 0;
$data = Price::
where`enter code here`In('id',$room_ids)
->whereDate('from_date', '<', $from_date)
->whereDate('to_date', '> ', $to_date)
->orderBy('created_at', 'asc')
->sum('price');
$sum_price = $data[0];
echo $sum_price;
答案 2 :(得分:1)
您的代码非常混乱,没有多大意义。
例如,为什么要使用for
循环?您的查询将始终返回相同的结果,那么循环的意义何在?
$i
是什么?
由于您的查询始终返回一个结果->take(1)
,因此只有$data[0]
会有一个值,$data[$f]
应该返回什么,例如$data[1]
,$data[2]
等
您可以使用查询生成器对价格求和
$sum = Price::whereIn('id', $room_ids)
->whereDate('from_date', '<', $from_date)
->whereDate('to_date', '>', $to_date)
->orderBy('created_at', 'asc')
->sum('sales_price');
答案 3 :(得分:1)
尝试一下:
$sum_price[] = $data[$f]->sales_price;
// here use this and outside of your loop do an array sum
$sum = array_sum($sum_price);