以下是使用FullCalendar 5和Laravel 7来标记每个资源的重叠事件的解决方法的代码示例:
首先,需要在Laravel中设置好FullCalendar 5,并创建资源和事件的模型和数据库表。
在资源模型中,定义资源和事件之间的关系:
// Resource.php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Resource extends Model
{
public function events()
{
return $this->hasMany(Event::class);
}
}
// Event.php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;
class Event extends Model
{
public function resource()
{
return $this->belongsTo(Resource::class);
}
public static function checkOverlap($resourceId, $start, $end, $eventId = null)
{
$events = Event::where('resource_id', $resourceId)
->when($eventId, function ($query) use ($eventId) {
$query->where('id', '!=', $eventId);
})
->where(function ($query) use ($start, $end) {
$query->where(function ($query) use ($start, $end) {
$query->where('start', '>=', $start)
->where('start', '<', $end);
})
->orWhere(function ($query) use ($start, $end) {
$query->where('end', '>', $start)
->where('end', '<=', $end);
})
->orWhere(function ($query) use ($start, $end) {
$query->where('start', '<=', $start)
->where('end', '>=', $end);
});
})
->get();
return $events->count() > 0;
}
}
// CalendarController.php
namespace App\Http\Controllers;
use App\Resource;
use App\Event;
use Illuminate\Http\Request;
class CalendarController extends Controller
{
public function index()
{
$resources = Resource::with('events')->get();
$events = Event::all();
return view('calendar.index', compact('resources', 'events'));
}
}
FullCalendar 5 with Laravel 7
以上是使用FullCalendar 5和Laravel 7来标记每个资源的重叠事件的解决方法的示例代码。你
上一篇:标记满足两个条件的行
下一篇:标记没有被添加到地图上