首页 > 解决方案 > 标记每个资源的重叠事件(FullCalendar 5,Laravel 7)

问题描述

使用resourceTimelineWeekFullCalendar 5,我需要检查重叠事件——不是一般情况,而是每个资源。目标是在事件重叠时在一个资源周围制作红色边框。我只是无法掌握如何使用 Eloquent 在 Laravel 7 中实现这一点。我正在获取我想要应用检查的所有资源的事件

      protected $appends = ['color','borderColor'];

      $events = Toolplan::query()
        ->select('id', 'eventId', 'resourceId', 'title', 'start', 'end')
        ->where(function ($query) use ($start, $end) {
            $query
                ->where(function ($q) use ($start, $end) {
                    $q->whereDate('start', '>=', $start)->whereDate('end', '<=', $end);
               })
                ->orWhere(function ($q) use ($start, $end) {
                    $q->whereDate('start', '<=', $start)->whereDate('end', '>=', $end);
               })
                ->orWhere(function ($q) use ($start, $end) {
                    $q->whereDate('end', '>=', $start)->whereDate('end', '<=', $end);
               })
                ->orWhere(function ($q) use ($start, $end) {
                    $q->whereDate('start', '>=', $start)->whereDate('start', '<=', $end);
               });
        })
        ->whereIn('eventId', $processIds)
        ->get(); 
        return json_encode($events);

在我的Toolplan.php并且想使用一个 Mutator 我也在我的定义中Toolplan.php

    public function getBorderColorAttribute($value)
    {
      $overlaps = $this->eventOverlaps();
      if($overlaps)
        return 'Red';
      return $this->color;
    }    

现在的问题是我需要确定一个资源的两个事件是否重叠,这就是我卡住的地方:

    public function eventOverlaps()
    {
        (...) // ???
          return true;
        
      return false;
    } 

我很感激任何正确方向的提示。

标签: laraveleloquentfullcalendar

解决方案


推荐阅读