Я пользуюсь фреймворком Laravel, соотвественно когда совершаю запрос к бд, как результат получаю такую структуру:
Collection {#288 ▼
#items: array:7 [▼
0 => {#323 ▼
+"record_id": 1
+"city_id": 4
+"value": "90"
+"from_date": "2017-11-01 00:00:00"
+"to_date": "2018-11-30 23:59:59"
}
1 => {#321 ▼
+"record_id": 2
+"city_id": 4
+"value": "70"
+"from_date": "2018-12-01 00:00:00"
+"to_date": "2019-03-31 23:59:59"
}
2 => {#324 ▶}
3 => {#326 ▶}
4 => {#327 ▶}
5 => {#328 ▶}
6 => {#329 ▶}
]
}
Как ее средствами Eloqunet или нативным php привести к
видуCollection {#288
#items: array:3 [
+ city_id(4) => {
+ value(90) => {
+"from_date": "2017-11-01 00:00:00"
+"to_date": "2018-11-30 23:59:59"
}
+ value(70) => {
+"from_date": "2018-12-01 00:00:00"
+"to_date": "2019-11-30 23:59:59"
}
}
+ city_id(3) => {
//etc
}
}
В документации к Eloquenet есть много методов, которые позволяют получить похожий результат, но возможно из-за отсутствия полного понимания того, как достигнуть результата, у меня не выходит. На данный момент лучшее что у меня
вышло:Collection {#345 ▼
#items: array:3 [▼
4 => Collection {#338 ▼
#items: array:3 [▼
90 => Collection {#335 ▼
#items: array:1 [▼
0 => {#323 ▼
+"value": "90"
+"from_date": "2017-11-01 00:00:00"
+"to_date": "2018-11-30 23:59:59"
}
]
}
70 => Collection {#336 ▶}
60 => Collection {#337 ▶}
]
}
3 => Collection {#341 ▼
#items: array:2 [▼
90 => Collection {#339 ▼
#items: array:1 [▼
0 => {#326 ▼
+"value": "90"
+"from_date": "2017-11-01 00:00:00"
+"to_date": "2019-02-28 23:59:59"
}
]
}
60 => Collection {#340 ▶}
]
}
10 => Collection {#344 ▶}
]
}
Почти, но из-за промежуточного массива в конце вызов нужного свойства будет выглядеть подобным
city_id->value[0]->property
, что не очень хорошо, поскольку потом данные нужно будет упаковать в json и дальше уже работает на клиентской стороне. Как это сделать правильно?