2017-06-01 282 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();