2017-04-25 8 views
1

안녕하세요 다음 JSON 있습니다개체 배열을 그룹화

[ 
    { 
    "id": 1, 
    "company_id": 2, 
    "route_id": 16, 
    "class": "Standard", 
    "fare": 35, 
    "weekday": "monday", 
    "reporting_time": "06:00 PM", 
    "departure_time": "07:00 PM", 
    "extras": [] 
    }, 
    { 
    "id": 2, 
    "company_id": 2, 
    "route_id": 16, 
    "class": "Standard", 
    "fare": 35, 
    "weekday": "tuesday", 
    "reporting_time": "06:00 PM", 
    "departure_time": "07:00 PM", 
    "extras": [] 
    }, 
    { 
    "id": 3, 
    "company_id": 2, 
    "route_id": 16, 
    "class": "Standard", 
    "fare": 35, 
    "weekday": "wednesday", 
    "reporting_time": "06:00 PM", 
    "departure_time": "07:00 PM", 
    "extras": [] 
    }, 
    { 
    "id": 4, 
    "company_id": 2, 
    "route_id": 16, 
    "class": "VIP", 
    "fare": 35, 
    "weekday": "thursday", 
    "reporting_time": "06:00 PM", 
    "departure_time": "07:00 PM", 
    "extras": [] 
    }, 
    { 
    "id": 5, 
    "company_id": 2, 
    "route_id": 16, 
    "class": "VIP", 
    "fare": 35, 
    "weekday": "friday", 
    "reporting_time": "06:00 PM", 
    "departure_time": "07:00 PM", 
    "extras": [] 
    }, 
    { 
    "id": 6, 
    "company_id": 2, 
    "route_id": 16, 
    "class": "Business", 
    "fare": 35, 
    "weekday": "saturday", 
    "reporting_time": "06:00 PM", 
    "departure_time": "07:00 PM", 
    "extras": [] 
    } 
] 

이 데이터가 내 웅변 모델에 의해 반환되는 방법, 난 등

I 특정 필드를 숨길 변압기 출력 형식을 이 데이터를 class 속성으로 그룹화하려고합니다. 웅변 쿼리 또는 데이터베이스 구조를 변경하지 않고 내가이 작업을 수행하려면 어떻게

[ 
    { 
     "class":"Standard", 
     "schedules":[ 
     { 
      "id":1, 
      "company_id":2, 
      "route_id":16, 
      "fare":35, 
      "weekday":"monday", 
      "reporting_time":"06:00 PM", 
      "departure_time":"07:00 PM", 
      "extras":[ 

      ] 
     }, 
     { 
      "id":2, 
      "company_id":2, 
      "route_id":16, 
      "fare":35, 
      "weekday":"tuesday", 
      "reporting_time":"06:00 PM", 
      "departure_time":"07:00 PM", 
      "extras":[ 

      ] 
     }, 
     { 
      "id":3, 
      "company_id":2, 
      "route_id":16, 
      "fare":35, 
      "weekday":"wednesday", 
      "reporting_time":"06:00 PM", 
      "departure_time":"07:00 PM", 
      "extras":[ 

      ] 
     } 
     ] 
    }, 
    { 
     "class":"VIP", 
     "schedules":[ 
     { 
      "id":4, 
      "company_id":2, 
      "route_id":16, 
      "fare":35, 
      "weekday":"thursday", 
      "reporting_time":"06:00 PM", 
      "departure_time":"07:00 PM", 
      "extras":[ 

      ] 
     }, 
     { 
      "id":5, 
      "company_id":2, 
      "route_id":16, 
      "fare":35, 
      "weekday":"friday", 
      "reporting_time":"06:00 PM", 
      "departure_time":"07:00 PM", 
      "extras":[ 

      ] 
     } 
     ] 
    }, 
    { 
     "class":"Business", 
     "schedules":[ 
     { 
      "id":6, 
      "company_id":2, 
      "route_id":16, 
      "fare":35, 
      "weekday":"saturday", 
      "reporting_time":"06:00 PM", 
      "departure_time":"07:00 PM", 
      "extras":[ 

      ] 
     } 
     ] 
    } 
] 

: 이것은 내가 데이터를 같이하는 방법입니까? 이것을 달성하기 위해 변압기를 사용할 수있는 방법이 있습니까? 그렇지 않다면 유일한 방법은 웅변 쿼리를 변경하는 것입니다. 데이터를 원하는 방식으로 보이게하려면 어떻게해야합니까?

+1

컬렉션을 사용할 수 있습니다. collect ($ result) -> groupBy ('class'); – yasmuru

+0

고맙지 만 내가 원하는 것은 아니며 클래스 이름이 키가되며 데이터가 동적으로 생성되므로 키가 무엇이 될지 예측할 수 없습니다. – user3718908

답변

1
$result=[]; 
    foreach($youarray as $key => $item) 
    { 
     $result[ $item['class'] ]['class'] = $item['class']; 
     $result[ $item['class'] ]['schedules'] = [$item['id'], $item['company_id'], etc. ]; 
    } 
    return $result;