2016-07-07 104 views
3

我正在使用雄辯查詢從表中檢索數據。該表列如下所示:在laravel的兩個日期之間檢索數據

id started_at finished_at 
1 2016-06-01 2016-06-30 
2 2016-05-03 2016-05-28 

我想要做的是,給定一個$date(例如:2016年6月18日),並獲得該行的數據,這之間的$date開始在和finished_at列。

我在Laravel documentation中發現了whereBetween條款,但我沒有辦法正確使用它。

回答

6

如果你可以使用碳,那麼這段代碼對我來說工作正常。

$dateS = new Carbon('first day of January 2016'); 
$dateE = new Carbon('first day of November 2016'); 
$result = ModelName::whereBetween('created_at', [$dateS->format('Y-m-d')." 00:00:00", $dateE->format('Y-m-d')." 23:59:59"])->get(); 

或者,您可以通過使用DB::enableQueryLog();調試查詢來檢查這個問題,並DB::getQueryLog();功能,如

DB::enableQueryLog(); 
$dateS = new Carbon('first day of January 2016'); 
$dateE = new Carbon('first day of November 2016'); 
$result = ModelName::whereBetween('created_at', [$dateS->format('Y-m-d')." 00:00:00", $dateE->format('Y-m-d')." 23:59:59"])->get(); 
var_dump($result, DB::getQueryLog()); 
3

嘗試做這樣的事情:

$date1 = Carbon::today()->toDateString(); 
$date2 = Carbon::today()->toDateString(); 

$myModel = MyModel::find(1); 
$myModel->whereBetween('created_at', [$date1, $date2]); 
$myModel->get(); 

關當然,您需要更改日期。

相關問題