Laravel如何计算近30天收益对比前30天的涨跌百分比
Laravel 近30天收益同比涨跌百分比实现方案
核心实现步骤
- 先获取上一个30天周期的收益总和,统计区间为
距今60天 ~ 距今30天 - 处理除数为0的边界情况,计算两个周期的收益差值百分比
- 按展示需求格式化输出涨跌标识与百分比数值
完整代码示例
use Carbon\Carbon; // 已有的近30天收益统计 $dateFrom = Carbon::now()->subDays(30); $dateTo = Carbon::now(); $currentMonthly = (float) Transaction::whereBetween('created_at', [$dateFrom, $dateTo])->sum('amount'); // 上一个30天周期收益统计 $prevDateFrom = Carbon::now()->subDays(60); $prevDateTo = Carbon::now()->subDays(30); $prevMonthly = (float) Transaction::whereBetween('created_at', [$prevDateFrom, $prevDateTo])->sum('amount'); // 计算涨跌百分比 $isIncrease = true; $showPercent = '0%'; if ($prevMonthly == 0) { // 上一周期无收益时的自定义处理逻辑,可根据业务调整 if ($currentMonthly > 0) { $showPercent = '+100%'; } elseif ($currentMonthly < 0) { $showPercent = '-100%'; $isIncrease = false; } } else { $diff = $currentMonthly - $prevMonthly; $percent = round(abs($diff / $prevMonthly) * 100, 1); // 保留1位小数,可修改精度 if ($diff >= 0) { $showPercent = '+' . $percent . '%'; } else { $showPercent = '-' . $percent . '%'; $isIncrease = false; } }
前端样式适配(Blade模板示例)
可以根据涨跌状态设置不同的文本颜色,实现对应展示效果:
<span class="{{ $isIncrease ? 'text-success' : 'text-danger' }}"> {{ $showPercent }} </span>
内容的提问来源于stack exchange,提问作者Mirza Ali
相关产品推荐
相关产品推荐

