Laravel Carbon减去当前日期的天数

zee*_*tit 42 php datetime laravel php-carbon

我试图从模型"用户"中提取对象,其created_at日期已超过30天.

Carbon :: now()==>我想要==> Carbon :: now() - 30days

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

怎么能实现这一目标?

Ale*_*nin 100

使用subDays()方法:

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

  • 您是否确定将"<"更改为">"以便在30天前创建用户? (2认同)
  • 我的条件是当前日期是从当前日期起超过30天.我想这个逻辑对我来说是完成的任务 (2认同)
  • 很高兴它有所帮助。) @ChrisForrence 是的,如果我使用 `&lt;`,它将返回在 `now-30 days` 点之前创建的所有用户。 (2认同)
  • @AlexeyMezenin 这就是最初的提问者正在寻找的;以今天(12 月 13 日)为例,“从今天起超过 30 天”将是 11 月 13 日之前创建的用户。 (2认同)

小智 17

从 Laravel 5.6 开始,您可以使用whereDate

$users = Users::where('status_id', 'active')
       ->whereDate( 'created_at', '>', now()->subDays(30))
       ->get();
Run Code Online (Sandbox Code Playgroud)

您还有 whereMonth / whereDay / whereYear / whereTime


小智 7

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

$users = Users::where('status_id', 'active')
           ->where( 'created_at', '>', date('Y-m-d', strtotime("-30 days"))
           ->get();
Run Code Online (Sandbox Code Playgroud)

  • 可以使其 `date('Ymd 00:00:00', strtotime("-30 days")` 更加整洁 (4认同)