我有一个选举模型,我正在尝试编写一个查询,向我显示特定结果。
这个想法很简单:
选举starting_date
,例如,是15/10/2018。
我需要查询以显示将在接下来的2周内开始的所有elections
。
对于这个特定情况,我的意思是今天是01/10/2018,所以我需要所有在01/10/2018 - 15/10/2018
期开始的选举。
所以,我试图写类似的东西:
public function notificationBeforeCollection() {
return $this->activeElections()
->where('start_collection', '>=', Carbon::now()
->subDays(14)->format('Y-m-d'))
->where('start_collection', '<', Carbon::now()
->format('Y-m-d'));
}
但是它不起作用,并且通过将starting_date
与今天进行比较,看来它不起作用。看来我需要写一些类似的东西:
where('starting_date', '>=', 'starting_date'->subDays(14);
如果我是对的,有没有办法针对查询生成器中的字段使用Carbon
?
答案 0 :(得分:2)
您的实际查询正在查找14天前开始的所有选举。
您需要执行以下操作:
return $this->activeElections()->where('start_collection', '>', Carbon::today())
->where('start_collection', '<=' Carbon::today()->addDays(14));
答案 1 :(得分:2)
要从明天开始两周的“选举”
// using 'Carbon'
$start_date = Carbon::now()->addDay()->format('Y-m-d');
$end_date = Carbon::now()->addDays(14)->format('Y-m-d');
public function notificationBeforeCollection() {
return $this->activeElections()->whereBetween(
'start_collection', [$start_date, $end_date]
);
}