2014-06-27 35 views
0

我有一個查詢,其中數據庫中的條目可能會將end日期設置爲零。我該怎麼辦下面的查詢 - 我想選擇所有這些事件,其中:Laravel查詢 - 有條件地選擇條目

一)的開始日期是今天之前,但結束日期設置爲零(0000-00-00 00:00:00

b)的開始日期和結束日期是今天之後

所有到目前爲止,我所得到的是選擇在那裏後,今天開始日期:

$eventsList = DB::table('events') 
    ->where('start', '>', Carbon::now()) 
    ->get(); 

但是這錯過了昨天開始但沒有結束日期設置的那些。

編輯:我已經加入到與orWhere條款查詢,但orWhere使其返回結果:

$eventsList = DB::table('events') 
    ->where('start', '>', Carbon::now()) 
    ->orWhere(function($query) 
    { 
     $query->where('start', '<', Carbon::now()) 
      ->where('end', '=', '0000-00-00 00:00:00'); 
    }) 
    ->get(); 
+0

'where()'方法是可鏈接的(http://en.wikipedia.org/wiki/Method_chaining#PHP)。連鎖多個'where()'到'AND'你的條件。 – thpl

+0

@ThomasDavidPlat感謝您的評論 - 我仍然有這個鏈接的問題(請參閱編輯) – babbaggeii

回答

0

我猜你正在尋找的東西是這樣的:

 DB::table('events') 
     ->where(function($query) 
     { 
      $query->where('start', '>', Carbon::now()) 
        ->where('end', '>', Carbon::now()) 
     } 
     ->orWhere(function($query) 
     { 
      $query->where('start', '<', Carbon::now()) 
        ->where('end', '=', '0000-00-00 00:00:00'); 
     }) 
     ->get();