我正在使用一个雄辩的查询来从表中检索数据。表格列如下所示:
id started_at finished_at
1 2016-06-01 2016-06-30
2 2016-05-03 2016-05-28
我想要做的是,给定一个$date
(例如:2016-06-18)并获取该行的数据,$date
之间的起始位置和最终的列数。
我在Laravel documentation中找到了whereBetween
条款,但我无法正确使用它。
答案 0 :(得分:11)
如果你可以使用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();
或者您可以使用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());
答案 1 :(得分:5)
尝试做这样的事情:
$date1 = Carbon::today()->toDateString();
$date2 = Carbon::today()->toDateString();
$myModel = MyModel::find(1);
$myModel->whereBetween('created_at', [$date1, $date2]);
$myModel->get();
当然,您需要更改日期。