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

FullCalendar重复数据问题:如何合并同时间同补剂的日程?

同一时间相同补剂仅显示单条日程的实现方案

完全可以实现,核心是按补剂和日期对记录进行分组,避免重复生成相同事件。以下是两种可行的实现方式:

方式一:PHP代码层面分组

先遍历原始数据,将同一日期、同一补剂的记录归为一组,再基于分组结果生成日历事件:

// 初始化分组数组
$groupedSupplements = [];

foreach ($swimmerSupplements as $supplement) {
    // 生成唯一分组键:日期 + 补剂ID(用ID比名称更精准,避免同名补剂混淆)
    $groupKey = $supplement->date . '_' . $supplement->supplement->id;
    
    if (!isset($groupedSupplements[$groupKey])) {
        $groupedSupplements[$groupKey] = [
            'title' => $supplement->supplement->name,
            'start' => $supplement->date,
            'memberCount' => 1 // 记录需要服用该补剂的人数(可选)
        ];
    } else {
        // 人数累加
        $groupedSupplements[$groupKey]['memberCount']++;
    }
}

// 生成最终日历事件数组
$eventsSwimmerSupplement = [];
foreach ($groupedSupplements as $item) {
    // 可选:在标题中添加人数提示,比如"钙2克(3人)"
    $displayTitle = $item['title'];
    // if ($item['memberCount'] > 1) {
    //     $displayTitle .= '(' . $item['memberCount'] . '人)';
    // }
    
    $eventsSwimmerSupplement[] = [
        'title' => $displayTitle,
        'allDay' => true,
        'start' => $item['start'],
        'color' => 'red'
    ];
}

方式二:数据库查询阶段分组(更高效)

如果数据量较大,建议直接在数据库查询时完成分组,减少PHP层面的处理压力:

// 假设使用Laravel Eloquent,提前按日期和补剂ID分组并统计人数
$groupedSupplements = \App\Models\SwimmerSupplement::with('supplement')
    ->select('date', 'supplement_id', \Illuminate\Support\Facades\DB::raw('COUNT(*) as member_count'))
    ->groupBy('date', 'supplement_id')
    ->get();

// 生成日历事件
$eventsSwimmerSupplement = [];
foreach ($groupedSupplements as $supplement) {
    $displayTitle = $supplement->supplement->name;
    // 可选:添加人数提示
    // if ($supplement->member_count > 1) {
    //     $displayTitle .= '(' . $supplement->member_count . '人)';
    // }
    
    $eventsSwimmerSupplement[] = [
        'title' => $displayTitle,
        'allDay' => true,
        'start' => $supplement->date,
        'color' => 'red'
    ];
}

两种方式都能确保同一日期、同一补剂仅生成一条日历事件,满足教练查看群体提示的需求。

内容的提问来源于stack exchange,提问作者Eva Burghoorn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:25:18