【问题标题】:Laravel : How to to group collection by date with datetime field?Laravel:如何使用日期时间字段按日期对集合进行分组?
【发布时间】:2021-02-01 20:02:31
【问题描述】:

我有这个模型(匹配):

[
  {
    "id": 2,
    "match_date": "2021-06-12 16:00:00",
    "home": "Wales",
    "away": "Switzerland",
    "h_goals": 0,
    "a_goals": 0
  },
  {
    "id": 3,
    "match_date": "2021-06-12 19:00:00",
    "home": "Denmark",
    "away": "Finland",
    "h_goals": 0,
    "a_goals": 0
  }
]

我如何按 match_date 对它们进行分组,但只是没有日期时间的日期格式,日期输出也只是时间,像这样:-

[
 "date" : "2021-06-12",
  "data" :[
  {
    "id": 2,
    "m_date": "16:00:00",
    "home": "Wales",
    "away": "Switzerland",
    "h_goals": 0,
    "a_goals": 0
  },
  {
    "id": 3,
    "m_date": "19:00:00",
    "home": "Denmark",
    "away": "Finland",
    "h_goals": 0,
    "a_goals": 0
  }]
]

【问题讨论】:

    标签: laravel date datetime group-by


    【解决方案1】:

    使用 laravel 收集辅助方法,您可以将数据转换为

    $collection = collect([
        [
            "id"=> 2,
            "match_date"=>"2021-06-12 16:00:00",
            "home"=> "Wales",
            "away"=>"Switzerland",
            "h_goals"=> 0,
            "a_goals"=> 0
        ],
        [
            "id"=> 3,
            "match_date"=> "2021-06-12 19:00:00",
            "home"=> "Denmark",
            "away"=> "Finland",
            "h_goals"=> 0,
            "a_goals"=> 0
        ]
    ]);
    
    $results = $collection->map(function ($item, $key) {
        $item["m_date"] =  \Carbon\Carbon::parse($item["match_date"])->format("H:i:s");
        return $item;
    })->groupBy(function ($item, $key) {
        return \Carbon\Carbon::parse($item["match_date"])->format("Y-m-d");
    })->map(function ($item, $key) {
        return ["date"=> $key, "data"=> $item];
    })->values();
    

    【讨论】:

      猜你喜欢
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 2021-07-23
      • 2021-01-23
      • 2019-09-07
      相关资源
      最近更新 更多