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

Laravel中如何从多维Eloquent集合获取指定字段值填充日历

错误原因
  • Laravel 的 Illuminate\Database\Eloquent\Collection 类中,$items 是*受保护(protected)*属性,禁止外部直接通过 ->items 访问,这是你报错的核心原因。
  • 你拿到的 $events 本身已经是集合实例,无需再用 collect() 重复转换。
正确获取字段方法

你当前的集合是按日期字符串为键的二维结构,每个键对应的值是 DaysEvent 模型的集合,可根据需求选择以下实现:

1. 展开所有事件,提取目标字段(适合直接给日历组件传值)

直接用集合的 flatten() 方法拍平嵌套结构,再遍历提取所需字段即可。Eloquent 模型支持直接通过属性名读取 #attributes 内的字段值,无需手动操作 attributes 数组:

$calendarItems = $events->flatten()->map(function ($event) {
    return [
        'title' => $event->title,
        'location' => $event->location,
        'event_start' => $event->event_start,
        'event_end' => $event->event_end,
        // 其他需要的字段按需补充
    ];
});

// 如需转为数组直接调用 toArray()
$calendarItemsArr = $calendarItems->toArray();

2. 保留原日期分组结构提取字段

如果需要保留日期和对应事件的关联关系,直接遍历外层集合即可:

$dateGroupedItems = $events->map(function ($eventGroup, $date) {
    return [
        'date' => $date,
        'event_list' => $eventGroup->map(function ($event) {
            return [
                'title' => $event->title,
                'location' => $event->location,
                'event_start' => $event->event_start,
                'event_end' => $event->event_end,
            ];
        })
    ];
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:15:00