Laravel — Рассчитайте процентное увеличение или уменьшение заработка за последние 30 дней

#laravel #eloquent #percentage

Вопрос:

У меня есть таблица доходов в приложении Laravel. Я получаю сумму за последние 30 дней по этому запросу

 $dateFrom = Carbon::now()->subDays(30);
$dateTo = Carbon::now();
$monthly = Transaction::whereBetween('created_at', [$dateFrom, $dateTo])->sum('amount');
 

Теперь я хочу рассчитать увеличение или уменьшение дохода за последние 30 дней по сравнению с предыдущими последними 30 днями.

Я прикрепляю скриншот. Вот как я хочу показать процентную статистику Нажмите здесь, чтобы проверить

Комментарии:

1. Если есть какие-либо журналы для ваших старых значений в отношении новых, то вы должны иметь возможность отслеживать транзакцию

2. Под журналами вы подразумеваете бухгалтерскую книгу?

3. да, таким образом, вы можете рассчитать транзакцию за 30 дней со старым разом, сколько доходов было получено за последние 30 дней

Ответ №1:

Это мой подход. Вы можете рассчитать другой способ получения результата.

 $dateFrom = Carbon::now()->subDays(30);
$dateTo = Carbon::now();
$monthly = Transaction::whereBetween('created_at', [$dateFrom, $dateTo])- 
>sum('amount');

$previousDateFrom = Carbon::now()->subDays(60);
$previousDateTo = Carbon::now()->subDays(31);
$previousMonthly = Transaction::whereBetween('created_at', [$dateFrom,$dateTo])->sum('amount');

if($previousMonthly < $monthly){
    if($previousMonthly >0){
        $percent_from = $monthly - $previousMonthly;
        $percent = $percent_from / $previousMonthly * 100; //increase percent
    }else{
        $percent = 100; //increase percent
    }
}else{
    $percent_from = $previousMonthly -$monthly;
    $percent = $percent_from / $previousMonthly * 100; //decrease percent
}
 

Комментарии:

1. Если значение предыдущего месяца будет равно 0 из-за отсутствия заработка за последние 30 дней, то ошибка вызывает «Деление на ноль».

2. Здесь вы можете проверить, равно ли предыдущее значение 0 или нет. Ответ отредактирован.