在laravel中的两个日期之间检索数据

Aru*_*wij 8 eloquent laravel-5

我正在使用一个雄辩的查询来从表中检索数据.表格列如下所示:

id   started_at   finished_at   
1    2016-06-01   2016-06-30  
2    2016-05-03   2016-05-28  
Run Code Online (Sandbox Code Playgroud)

我想要做的是,给定一个$date(例如:2016-06-18)并获取行的数据,即from $date之间的开始于和finished_at列.

whereBetweenLaravel文档中找到了条款,但我没有想法正确使用它.

Brn*_*iya 13

如果你可以使用Carbon,那么这段代码对我来说很好.

$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();
Run Code Online (Sandbox Code Playgroud)

或者你可以通过调试查询使用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());
Run Code Online (Sandbox Code Playgroud)


小智 6

尝试做这样的事情:

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

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

当然,您需要更改日期。