2016-10-24 4 views
0

나는 Eloquent Query에 의해 리턴 된 콜렉션을 가지고있다. 콜렉션의 각 요소는 두 개의 정수 요소 (branch_id, event_id) 만있는 배열입니다. I 요소, 한 쌍의 표시 횟수를 카운트 할 필요가 있고 또한 그 값에 액세스 할 수있는 때문에, 또는 어레이의 모든 요소를 ​​동일한 쌍을 동일한 어레이에 결합 된 수집 및 만들 필요가있다.두 열을 계산하고 그룹화하는 방법은 무엇입니까?

나는 두 개의 열로 그룹에 결과를 쿼리 작성기의 GROUPBY 방법을 사용하고 있지만, 그것은 단지 내가 메서드에 전달 된 첫 번째 열 이름으로 결합 된 데이터를 반환합니다. 예

:

array:15 [▼ 
    0 => {#277 ▼ 
    +"branch_id": 1 
    +"event_id": 1 
    } 
    1 => {#279 ▼ 
    +"branch_id": 1 
    +"event_id": 1 
    } 
    2 => {#280 ▼ 
    +"branch_id": 1 
    +"event_id": 1 
    } 
    3 => {#281 ▼ 
    +"branch_id": 1 
    +"event_id": 1 
    } 
    4 => {#282 ▼ 
    +"branch_id": 1 
    +"event_id": 2 
    } 
    5 => {#283 ▼ 
    +"branch_id": 1 
    +"event_id": 21 
    } 
    6 => {#292 ▼ 
    +"branch_id": 58 
    +"event_id": 21 
    } 
    7 => {#284 ▼ 
    +"branch_id": 2 
    +"event_id": 5 
    } 
    8 => {#285 ▼ 
    +"branch_id": 3 
    +"event_id": 3 
    } 
    9 => {#286 ▼ 
    +"branch_id": 4 
    +"event_id": 4 
    } 
    10 => {#287 ▼ 
    +"branch_id": 5 
    +"event_id": 9 
    } 
    11 => {#289 ▼ 
    +"branch_id": 5 
    +"event_id": 9 
    } 
    12 => {#288 ▼ 
    +"branch_id": 5 
    +"event_id": 8 
    } 
    13 => {#290 ▼ 
    +"branch_id": 7 
    +"event_id": 10 

하면 알 수 있듯이, 첫 번째 네 개의 배열이 동일한 값을 갖는다 (branch_id : 1 EVENT_ID : ID) I 단일 배열로 결합 그 값을 검색해야하고, 그래서 동일한 값을 갖는 모든 배열을 앞뒤로 가져옵니다.

+1

어떻게 쿼리 빌더처럼 보이는 무엇입니까? 쿼리를 작성한 코드를 공유 할 수 있습니까? –

+0

나는 문제를 해결하기 위해 내가 사용했던 방법으로 그 게시물에 답변했다. –

답변

0
나는 이런 식으로 할 수 있었다

...

public function getAllIncidents() 
{ 
    $i = 0; 
    $data = []; 
    $values = DB::table('incidents')->select('branch_id', 'event_id')->orderBy('branch_id')->get()->groupBy('event_id'); 

    foreach ($values as $key => $value) { 
     $collections[$i] = $value->groupBy('branch_id'); 
     $i++; 
    } 

    $collections = array_collapse($collections); 
    $i = 0; 

    foreach ($collections as $key => $collection) { 
     $array     = $collection->toArray(); 
     $data[$i]['count']  = sizeof($array); 
     $data[$i]['branch_id'] = $array[0]->branch_id; 
     $data[$i]['event_id'] = $array[0]->event_id; 
     $i++;    
    } 

    return response()->json($data, 200); 
} 
관련 문제