2016-10-25 62 views
0

我正在創建日曆幾天的事件並且事件不能重疊。但是當另一個事件開始/結束時事件可以開始/結束。Laravel 5:檢查事件日期範圍是否已被採用

在Laravel的事件模型表中,我存儲了事件的開始和結束日期。 如何在存儲新事件數據庫之前檢查數據庫是否有效(與現有事件不重疊,不包括保證金/邊界日期)?

This is the idea

在事先非常感謝你的幫助。

回答

2

您可以使用下面的代碼以獲得正確的計數一定時間之間黃牌警告事件:

$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(); 
+0

也就是說它,謝謝! :) – zyx4sdk

+0

樂意幫忙:D .... –

2

這只是一些僞代碼,因爲您不提供任何代碼或模型,但取決於您的表的設置方式,您應該可以像這樣做。這將返回新事件的開始時間或結束時間落在現有事件的開始時間和結束時間之間的任何事件。如果您的時間是時間戳或DateTime列,這將工作。

Events::where(DB::raw("? between start_time and end_time",$start)) 
     ->orWhere(DB::raw("? between start_time and end_time",$end)) 
     ->get(); 
相關問題