Eloquent group by carbon date week&计数

时间:2017-09-22 15:09:32

标签: php arrays laravel eloquent php-carbon

我有一个包含91个项目的数组,我希望按周碳排列数组项目。

示例数据 -

 Collection {#240 ▼
  #items: array:91 [▼
    0 => array:2 [▶]
    1 => array:2 [▼
      "date" => Carbon {#278 ▼
        +"date": "2017-06-24 15:02:04.000000"
        +"timezone_type": 3
        +"timezone": "UTC"
      }
      "visitors" => 11
    ]

这是我目前的尝试 -

$dataViewQuarterly = $analytics->fetchSessions(Period::days(91))->take(91)->groupBy(function($date) {
        return Carbon::parse($date->date)->format('w');
});

目前正在此行投放Trying to get property of non-object -

return Carbon::parse($date->date)->format('w');

这是最好的方法吗?我应该使用这些数据构建一个新数组。

3 个答案:

答案 0 :(得分:0)

您可以使用startOfWeek Carbon方法

$dataViewQuarterly = $analytics->fetchSessions(Period::days(91))->take(91)->groupBy(function($date) {
 return Carbon::parse($date->date)->startOfWeek();
});

答案 1 :(得分:0)

我创造了一个非碳素& amp;不那么雄辩的做事方式,但确实有效。由于数据每天都不同,所以每6个月滚动一次,所以我每隔7个项目就会对阵列产生影响,这实际上并不影响数据。

    $dataFetchQuarterly = $analytics->fetchSessions(Period::days(91))->take(91)->toArray();
    $weeks = array_chunk($dataFetchQuarterly, 7);

    $dataViewQuarterly = array();

    foreach($weeks as $index=>$sub_array) {
        $counter = 0;

        foreach($sub_array as $donut) {
            $counter += $donut['visitors'];
        }

        $dataViewQuarterly[$index] = $counter;

    }

答案 2 :(得分:0)

尝试这个我会帮助但是我需要调查你的$date我不知道你有什么?

$dataViewQuarterly = $analytics->fetchSessions(Period::days(91))->take(91)->groupBy(function($date) {
        return Carbon::parse($date->created_at)->format('w');
});