2017-09-22 3 views
1

나는 배열 항목을 카본 날짜별로 그룹화하고자하는 91 개 항목의 배열을 가지고 있습니다.Eloquent group 카본 데이트 주간 및 카운트 별 배열

예 데이터 -

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'); 

이 갈 수있는 가장 좋은 방법입니다 그것에 대해. 이 데이터를 사용하여 새 배열을 작성해야합니다.

+0

이 줄을 사용하면 개체 이외의 오류가 발생하지 않습니까? – delboy1978uk

+0

'Period :: days (91)'무엇을 줄 것입니까? 범위가 지정된 쿼리입니까? –

+0

그건 작동하지 않습니다. 기본적으로 결과를 정수로 그룹화하도록 MySQL에 지시합니다. – aynber

답변

0

당신은 startOfWeek 탄소 방법 내가 일을 비 탄소 & 비 웅변 방법을 만들었습니다하지만이 작업을 수행

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

여전히'''객체가 아닌 객체의 속성을 얻으려고합니다 .'' 오류 – SamXronn

+0

'date' 속성이없는 컬렉션이 있습니다 – gbalduzzi

+0

결과 기간을 91에서 1로 변경하면 날짜가 항상 설정되므로 동일한 오류가 발생하는 단일 결과 만 반환하므로 날짜가 단일 결과로 설정되어 있는지 확인할 수 있습니다. – SamXronn

0

을 사용할 수 있습니다. 데이터가 매일 달라지기 때문에 롤링 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; 

    } 
0

나는 당신이 그것을이 무엇인지 확실하지 않다 당신의 $date으로 볼 필요하지만 도움이 될 것입니다 이것을 시도?

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