【问题标题】:Laravel 5.3: Best way to retrieve data between dates and group them in weeks?Laravel 5.3:在日期之间检索数据并按周分组的最佳方法?
【发布时间】:2017-09-11 13:34:10
【问题描述】:

大家好,我需要一些 SQL 建议... 假设我有过去 8 周的 1000 行数据。每行都有一个DATETIME 字段,我想提取最后 3 周的数据,按第 1 周、第 2 周和第 3 周对数据进行分组。实现这一目标的最佳方法是什么?

谢谢!

【问题讨论】:

  • 你能分享一下 10 行的例子吗?你的预期输出是什么?
  • 1) 标记您的数据库,2) 您所说的周是什么意思?任何 7 天?
  • 到目前为止你已经尝试过什么
  • 您想将其分组以获取聚合吗?因为有两种可能的差异方法。首先是在数据库中对其进行分组。二是在使用 Laravel Collection 从数据库中检索到数据后对其进行分组。

标签: php sql database laravel laravel-5


【解决方案1】:

使用Carbon。假设Record 模型和created_at 属性:

$records=Record::where('created_at', '<' ,Carbon\Carbon::now()->subWeeks(3))->get() ->groupBy(function($date) {
                return Carbon\Carbon::parse($date->created_at)->format('W');
            });

然后,

foreach($records as $week=>$record)
{
   echo $week;   // gives week 1, week 2 , week 3..
   foreach($record as $r)
   {
    echo $r;
   }
}

【讨论】:

    猜你喜欢
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 2020-09-16
    • 2011-04-17
    • 1970-01-01
    • 2016-08-27
    相关资源
    最近更新 更多