如何将 now() 与 Eloquent 一起使用?

How to use now() with Eloquent?

将 now() 与 Eloquent 一起使用的最佳方法是什么?我的意思是,return 今天的日期是否有本地 Eloquent 函数?我正在使用 Slim 框架,对于此查询,我找到的唯一解决方案是:

$now = date('Y/m/d H:i:s', time());

$articles = Article::where('created_at', '<', $now)
    ->orderBy('created_at', 'DESC')
    ->limit(10)
    ->get();

有点乱,不是吗? 我可以使用 Carbon,但它会产生额外的依赖性...

谢谢

这里有两个选择:要么使用 DB::raw 方法让 where 方法按原样处理给定的表达式:

$articles = Article::where(DB::raw('created_at < NOW()'))
                    ->orderBy('created_at', 'DESC')
                    ->limit(10)
                    ->get();

...或使用whereRaw方法:

$articles = Article::whereRaw('created_at < NOW()')
                    ->orderBy('created_at', 'DESC')
                    ->limit(10)
                    ->get();

作为旁注,Eloquent 有几个用于日期时间相关处理的辅助方法 - whereDatewhereMonthwhereDaywhereYearwhereTime。我真的不确定在这种特定情况下是否可以使用它们,但它们可能会在其他地方有所帮助。