2015-07-12 78 views
3

我有一個bookedstartend列作爲日期戳;查看日期範圍是否在Laravel 5之間

我知道,這

$start = "2015-07-12 01:00:00"; 
$end = "2015-07-12 02:00:00"; 

$users = DB::table('booked') 
        ->whereBetween('start', [$start, $end])->get(); 

檢查在start列內$落在任何日期開始和結束$。

我想要的其實是另一種方式。

我很難檢查book表中startend列中的$ start和$ end date變量發生的情況。

+1

你是什麼意思的「另一種方式」?開始日期超出給定開始/結束範圍的記錄? –

+0

我的理解是,上面的查詢檢查起始列是否在$ start和$ end之間。我想知道的是$ start和$ end是否落在列'start'和'end'之間。 – shaNnex

回答

0

下面的查詢會給你所有的記錄進行開始和結束的$之間開始和$結束

$users = DB::table('booked') 
    ->where('start', '>=', $start) 
    ->where('start', '<=', $end) 
    ->where('end', '>=', $start) 
    ->where('end', '<=', $end); 
4
// make sure $from is before $till, because they are probably provided as input 
$from = min($start, $end); 
$till = max($start, $end); 

// then simply 
DB::table('booked') 
    ->where('start', '<=', $from) 
    ->where('end', '>=', $till) 
    ->get(); 

它將返回行匹配包含在start-end$from-$till期:

start      end 
     |------------------------| 
     |----------------| 
     $from   $till 
相關問題