首页  >  问答  >  正文

从 Laravel 模型检索数据并生成 Spatie/Icalendar

我尝试从模型中检索数据,然后将其重写为 Spatie Icalendar 的适当格式,但由于存在多个事件而不仅仅是单个事件,因此它不起作用。

我尝试了许多不同的解决方案,但没有找到有效的解决方案。

请问,您将如何迭代 Spatie 中的众多事件?

Spatie 文档:https://github.com/spatie/icalendar-generator

我想迭代所有日历事件,为 Spatie 创建一个数组。

它应该以 ICAL 格式结束,对于普通日历来说是可提取的。

P粉312195700P粉312195700300 天前459

全部回复(1)我来回复

  • P粉317679342

    P粉3176793422024-01-17 11:45:21

    代码中存在很多不一致之处,我认为这使得事情变得更加困难。类将事件命名为属性、不一致的命名约定、复数模型(我知道,class 是保留关键字)等。

    只需循环事件并将模型数据一一添加到 spatie 包中即可。

    $calendar = Calendar::create($iCalendar->name);
    
    $events->each(function (Classes $event) {
        $calendar->event(Event::create($event->class_type === 1 ? 'Teoritime' : 'Køretime')
            ->startsAt($event->start_time)
            ->endsAt($event->start_time->addHour())
        )  
    });
    
    dd($calendar->get());

    我认为它需要一个结束时间,所以我增加了一小时。模型上的 start_time 应添加到 $dates 数组中,以转换为 Carbon 对象。我没有使用 for 循环,而是使用集合方法来创建类似的逻辑,请阅读它们 这里。这是查询生成器返回的类型。

    回复
    0
  • 取消回复