2017-04-25 9 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": [] 
    } 
] 

これはデータが私の雄弁モデルによって返されるか、私は特定のフィールドを非表示にする変圧器との出力をフォーマットされ

私はこのデータを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; 
関連する問題