Laravel查询日期比当前时间更近的

时间:2018-05-30 19:15:48

标签: laravel eloquent

我正在使用Laravel雄辩的模型。 我想添加查询条件where start_time later than now

例如:

Model::whereAfterNow('start_time')->all()
你能帮帮我吗?

2 个答案:

答案 0 :(得分:4)

看起来你需要一个查询范围(https://laravel.com/docs/5.6/eloquent#local-scopes)。

假设'start_time'是包含一些时间表示的模型属性(数据库字段),并且您想要一个返回所有模型的范围where 'start_time' later than now ...

如何构建代码取决于日期在数据库中的存储格式。

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

public function scopewhereAfterNow($query)
{
    return $query->where('start_time', '>', \Carbon\Carbon::now()->timestamp);
}

或者您可以使用数据库外观:

public function scopewhereAfterNow($query)
{
    return $query->where('start_time', '>', DB::raw('unix_timestamp(NOW())'));
}

您可能会这样称呼: $results = Model::whereAfterNow()->get();

答案 1 :(得分:0)

如果' start_time'返回您可以尝试的DateTime字符串:

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

如果' start_time'只返回时间然后你可以尝试:

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

请确保包含

use Carbon\Carbon;