2017-06-01 339 views
2

我想把這個查詢轉換成laravel雄辯的開始日期和結束日期之間選擇行,Laravel - 用雄辯

select * from schedule where (now() between start_date and end_date); 

我試着用whereBetween,但我得到了一些錯誤。

$schedule = Schedule::whereBetween(Carbon::now(), ['start_date', 'end_date'])->get(); 

誤差看起來像在Connection.php線這個

QueryException 647:未發現柱: SQLSTATE [42S22] 1054未知列「2017年6月1日六點17分30秒「在 'where子句'(SQL:SELECT * FROM schedule其中2017-06-01 06:17:30 start_date和end_date之間)

什麼想法?

+0

'whereBetween'的第一個參數應該是一個列名,而不是一個值 – Jerodev

回答

1

whereBetween應該使用like this,->whereBetween('loc_lng', array(-0.24272918701172, -0.24272918701172))其第一個參數是列名,第二個是區域。

在你的情況,你可以使用->where('start_date', '<' Carbon::now())->where('end_date', '>' Carbon::now());

0
$schedule = Schedule::where('start_date', '<=', Carbon::now()) 
    ->where('end_date', '>=', Carbon::now()) 
    ->get(); 

或者

$schedule = Schedule::whereRaw('(now() between start_date and end_date)')->get(); 
0

的whereBetween僅用於當你想找到一個行,其中一列是2個值之間,你想要什麼要做的是:

$now = Carbon::now(); 
$schedule = Schedule::where('start_date', '<=', $now) 
    ->where('end_date', '>=', $now) 
    ->get();