Laravel Carbon从当前日期减去天数


79

我试图从created_at日期已超过30天的“用户”模型中提取对象。

Carbon :: now()==>我要==> Carbon :: now()-30天

$users = Users::where('status_id', 'active')
               ->where( 'created_at', '<', Carbon::now())
               ->get();

如何实现呢?

Answers:


172

使用subDays()方法:

$users = Users::where('status_id', 'active')
           ->where( 'created_at', '>', Carbon::now()->subDays(30))
           ->get();

3
您确定要将“ <”更改为“>”以使用户创建超过30天吗?
克里斯·福伦斯

2
我的条件是当前日期距离当前日期超过30天。我想这确实逻辑为我的任务
zeetit

2
很高兴它有所帮助。)@ChrisForrence是的,如果我使用<,它将返回在now minus 30 dayspoint之前创建的所有用户。
Alexey Mezenin

2
@AlexeyMezenin这就是原始申请者所要的;以今天(12月13日)为例,“从今天起超过30天”将是11月13日之前创建的用户。
克里斯·福伦斯

我想他的more意思是later这里。也Carbon::now() ==> I want as ==> Carbon::now() - 30days几乎解释了OP想要什么。
Alexey Mezenin

5

您始终可以使用strtotime减去从当前日期算起的天数:

$users = Users::where('status_id', 'active')
           ->where( 'created_at', '>', date('Y-m-d', strtotime("-30 days"))
           ->get();
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.