You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel:如何基于两个日期间的时间段生成对应统计表格

问题原因

你遇到的问题根源是 Carbon实例是可变对象:表头渲染的for循环中,你直接修改了原始$from变量的值,等表头渲染完成时,$from已经被增加到晚于$to的日期。后续渲染tbody学生行的日期循环时,$i <= $to的初始判断条件直接不成立,所以不会渲染任何日期列。

解决方法

建议提前把需要渲染的所有日期生成固定的集合,后续表头和表体统一遍历这个集合即可,既避免重复处理日期,也不会出现变量污染的问题。

修改后的完整Blade代码如下:

@php
    use Carbon\Carbon;
    $from = Carbon::parse($from);
    $to = Carbon::parse($to);
    
    // 预生成所有要展示的日期集合,不修改原始$from变量
    $dates = collect();
    $current = $from->copy();
    while ($current->lte($to)) {
        $dates->push($current->copy());
        $current->addDay();
    }

    // 可选优化:把每日统计数据处理成 姓名_日期 为键的映射,方便单元格快速查找
    $dailyMap = $daily->keyBy(fn($item) => $item->name . '_' . $item->date);
@endphp
<div class="container text-right" dir="rtl">
    <table class="table">
        <thead>
            <tr>
                <td>#</td>
                <td>ناڤ</td>
                <!-- 直接遍历预生成的日期集合 -->
                @foreach($dates as $date)
                    <td>{{ $date->format('m/d') }}</td>
                @endfor
            </tr>
        </thead>
        <tbody>
            @php $counter = 1; @endphp
            @foreach ($students as $student)
                <tr>
                    <td>{{ $counter }}</td>
                    <td>{{ $student->name }}</td>
                    <!-- 同样遍历预生成的日期集合 -->
                    @foreach($dates as $date)
                        @php
                            $mapKey = $student->name . '_' . $date->toDateString();
                        @endphp
                        <!-- 这里可以根据你的需求显示统计值、yes/no等 -->
                        <td>{{ isset($dailyMap[$mapKey]) ? $dailyMap[$mapKey]->counts : 0 }}</td>
                    @endforeach
                </tr>
                @php $counter++; @endphp
            @endforeach
        </tbody>
    </table>
</div>

如果你不想预生成日期集合,也可以在每次循环日期时用copy()方法创建Carbon副本,避免修改原始变量:把tbody里的循环改成@for ($i = $from->copy(); $i <= $to; $i->modify('+1 day'))即可,但更推荐预生成日期的方案,性能和可维护性更好。

内容的提问来源于stack exchange,提问作者Sermed mayi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:54:03