Laravel 5:检查事件日期范围是否尚未确定

zyx*_*sdk 3 php date laravel laravel-5 laravel-5.2

我正在为几天的活动创建日历,并且活动不能重叠。但是事件可以在另一个事件开始/结束时开始/结束。

在Laravel中,我在事件模型表中存储事件的开始和结束日期。在存储新事件之前,如何检查数据库是否有效(不与现有事件重叠,不包括保证金/边界天)?

这是主意

在此先非常感谢您的帮助。

小智 8

将其用于所有变体交叉日期范围。它对我有帮助

$rangeCount = TransferSchedule::where(function ($query) use ($from, $to) {
                $query->where(function ($query) use ($from, $to) {
                    $query->where('date_from', '<=', $from)
                        ->where('date_to', '>=', $from);
                })->orWhere(function ($query) use ($from, $to) {
                    $query->where('date_from', '<=', $to)
                        ->where('date_to', '>=', $to);
                })->orWhere(function ($query) use ($from, $to) {
                    $query->where('date_from', '>=', $from)
                        ->where('date_to', '<=', $to);
                });
            })->count();
Run Code Online (Sandbox Code Playgroud)

  • 谢谢兄弟,这个解决方案帮助我管理带有事件的日历。它允许我显示尚未完成的事件。 (3认同)

Ami*_*pta 7

您可以使用以下代码来获取特定时间之间预订的事件的正确计数:

$eventsCount = Events::where(function ($query) use ($startTime, $endTime) {
 $query->where(function ($query) use ($startTime, $endTime) {
    $query->where('start', '>=', $startTime)
            ->where('end', '<', $startTime);
    })
    ->orWhere(function ($query) use ($startTime, $endTime) {
        $query->where('start', '<', $endTime)
                ->where('end', '>=', $endTime);
    });
})->count();
Run Code Online (Sandbox Code Playgroud)