我正在使用Laravel雄辩的模型。
我想添加查询条件where start_time later than now
。
例如:
Model::whereAfterNow('start_time')->all()
你能帮帮我吗?
答案 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;