Как сгруппировать поля в отдельные сущности

Я делаю запрос к одной таблице, в которой мне нужно сгрупировать поля в отдельные сущьности:

public function getOrderCharts()
    {
        $data = Order::select(
             *some fields*
             ...
             ...
            )->distinct()
            ->where('client_id', '=', auth()->id())
            ->where('delivery_type', '=', 0)
            ->get();

            $requisites = array();

        foreach($data as $item){
            $requisites = (array)json_decode($item->requisites, true);

            $carrier = new CounterpartyStructure((array)Arr::get($requisites, 'carrier'));
            $item->carrier = $carrier->toArray();

            $counterparty = new CounterpartyStructure((array)Arr::get($requisites, 'counterparty'));
            $item->counterparty = $counterparty->toArray();

            $payer_transport = new CounterpartyStructure((array)Arr::get($requisites, 'payer_transport'));
            $item->payer_transport = $payer_transport->toArray();

            unset($item->requisites);
        }

        if(empty($data)) {
            return response()->json(['data' => $data, 'message' => 'data is empty', 'success' => false], 400);
        }
        return response()->json(['data' => $data, 'message' => '', 'success' => true], 200);
    }

Так выглядит мой ответ

"data": [
        {
            "driver_last_name": "123",
            "driver_first_name": "123",
            "driver_middle_name": "123",
            "driver_phone": "+7 (123) 546-45-54",
            "driver_passport_serial": "123",
            "driver_passport_num": "123",
            "driver_passport_issued_by": "тест",
            "driver_passport_issued_date": "2021-11-05",
            "tractor_mark": "123",
            "tractor_model": "123",
            "tractor_number": "123",
            "tractor_region": "123",
            "trailer_mark": "123",
            "trailer_model": "123",
            "trailer_number": "123",
            "trailer_region": "123",
}
]

Но я бы хотел преобразовать ответ к такому виду

"data": [
        "driver": {
            "driver_last_name": "123",
            "driver_first_name": "123",
            "driver_middle_name": "123",
            "driver_phone": "+7 (123) 546-45-54",
            "driver_passport_serial": "123",
            "driver_passport_num": "123",
            "driver_passport_issued_by": "тест",
            "driver_passport_issued_date": "2021-11-05",
            },
       "transport" : {
            "tractor_mark": "123",
            "tractor_model": "123",
            "tractor_number": "123",
            "tractor_region": "123",
            "trailer_mark": "123",
            "trailer_model": "123",
            "trailer_number": "123",
            "trailer_region": "123",
            }
]

Может быть существует некий метод для такого, или может необходимо поменять запрос к бд,буду рад любым предположениям и ответам


Ответы (0 шт):