Как получить сумму чисел в течение цикла Laravel - PullRequest
1 голос
/ 04 ноября 2019

У меня есть цикл, в котором за каждый шаг я получаю цену дня. Теперь я хочу получить сумму всех дней и показать их пользователю. Вот моя попытка ниже:

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 день и не получаю сумму за все дни. Как я могу этого достичь?

Ответы [ 4 ]

2 голосов
/ 04 ноября 2019
$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 голосов
/ 04 ноября 2019

Вы можете использовать функцию суммы в Laravel Eloquent. Пожалуйста, проверьте здесь для деталей.

$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 голос
/ 04 ноября 2019

Попробуйте:

$sum_price[] = $data[$f]->sales_price;
// here use this and outside of your loop do an array sum
$sum = array_sum($sum_price);
1 голос
/ 04 ноября 2019

Ваш код очень запутанный и не имеет особого смысла.

Например, почему вы используете петлю 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...