Laravel查询,其中日期比当前时间最近

Laravel查询,其中日期比当前时间最近,laravel,eloquent,Laravel,Eloquent,我使用的是一个拉威尔雄辩的模型。 我想添加一个查询条件,其中开始时间晚于现在 例如: Model::whereAfterNow('start_time')->all() 您能帮我吗???如果“开始时间”返回日期时间字符串,您可以尝试: Model::where('start_time', '>', \Carbon\Carbon::now()->toDateTimeString())->get(); Model::where('start_time', '>',

我使用的是一个拉威尔雄辩的模型。 我想添加一个查询条件
,其中开始时间晚于现在

例如:

Model::whereAfterNow('start_time')->all()

您能帮我吗???

如果“开始时间”返回日期时间字符串,您可以尝试:

Model::where('start_time', '>', \Carbon\Carbon::now()->toDateTimeString())->get();
Model::where('start_time', '>', \Carbon\Carbon::now()->toTimeString())->get();
如果“开始时间”仅返回时间,则可以尝试:

Model::where('start_time', '>', \Carbon\Carbon::now()->toDateTimeString())->get();
Model::where('start_time', '>', \Carbon\Carbon::now()->toTimeString())->get();

看起来您需要一个查询范围()

假设“开始时间”是一个模型属性(数据库字段),其中包含时间的某种表示形式,并且您需要一个范围来返回所有模型,其中“开始时间”晚于现在

代码的结构取决于日期存储在数据库中的格式

例如,如果您使用的是历元时间戳,那么在Model.php中:

public function scopewhereAfterNow($query)
{
    return $query->where('start_time', '>', \Carbon\Carbon::now()->timestamp);
}
或者您可以使用DB facade:

public function scopewhereAfterNow($query)
{
    return $query->where('start_time', '>', DB::raw('unix_timestamp(NOW())'));
}
你可以这样称呼它:
$results=Model::wherefternow()->get()

您可以使用Model::where('start_time','>',Carbon::now())->get();但我不会使用此结构我编辑了我的答案,以便更准确地回答您的问题。您使用DB::raw('unix_timestamp(NOW())')查询,它不需要,并且在数据库中有附加查询。它不是附加查询,而是作为字符串注入现有查询中。看见