代码之家  ›  专栏  ›  技术社区  ›  Davit Zeynalyan

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

  •  2
  • Davit Zeynalyan  · 技术社区  · 6 年前

    我用的是拉瓦夫雄辩的模型。 where start_time later than now .

    例如:

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

    你能帮助我吗??

    2 回复  |  直到 6 年前
        1
  •  5
  •   Ben Sholdice    6 年前

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

    假设“start_time”是一个模型属性(数据库字段),其中包含时间的某种表示形式,您需要一个返回所有模型的作用域 where 'start_time' later than now

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

    例如,如果使用epoch时间戳,则在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::whereAfterNow()->get();

        2
  •  0
  •   Oscar A Garcia    6 年前

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

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

    如果“开始时间”只返回时间,则可以尝试:

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

    只要确保包括

    use Carbon\Carbon;