【问题标题】:Retrieve data between two dates in laravel在laravel中检索两个日期之间的数据
【发布时间】:2016-07-07 16:41:30
【问题描述】:

我正在使用 eloquent 查询从表中检索数据。表格列如下所示:

id   started_at   finished_at   
1    2016-06-01   2016-06-30  
2    2016-05-03   2016-05-28  

我想要做的是,给定一个$date(例如:2016-06-18)并获取该行的数据,即$date 之间的started at 和finished_at 列。

我在Laravel documentation 中找到了whereBetween 子句,但我不知道如何正确使用它。

【问题讨论】:

    标签: laravel-5 eloquent


    【解决方案1】:

    如果您可以使用 Carbon,那么此代码将适合您。

    $dateS = new Carbon('first day of January 2016');
    $dateE = new Carbon('first day of November 2016');
    $result = ModelName::whereBetween('created_at', [$dateS->format('Y-m-d')." 00:00:00", $dateE->format('Y-m-d')." 23:59:59"])->get();
    

    或者您可以通过使用DB::enableQueryLog();DB::getQueryLog(); 之类的函数调试查询来检查问题

    DB::enableQueryLog();
    $dateS = new Carbon('first day of January 2016');
    $dateE = new Carbon('first day of November 2016');
    $result = ModelName::whereBetween('created_at', [$dateS->format('Y-m-d')." 00:00:00", $dateE->format('Y-m-d')." 23:59:59"])->get();
    var_dump($result, DB::getQueryLog());
    

    【讨论】:

      【解决方案2】:

      尝试做这样的事情:

      $date1 = Carbon::today()->toDateString();
      $date2 = Carbon::today()->toDateString();
      
      $myModel = MyModel::find(1);
      $myModel->whereBetween('created_at', [$date1, $date2]);
      $myModel->get();
      

      当然,您需要更改日期。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-26
        • 2017-04-25
        • 2023-03-09
        相关资源
        最近更新 更多