#php #laravel #collections
Вопрос:
У меня есть коллекция laravel ниже из: $unitinventory = DB::select('call wh_inventory_list(?)', array('Units'));
[
{
"unit_id":"UCL2100001",
"rr_id":"RR2100001",
"make":"FAW",
"chassis_no":"LFWSRXRJ9M1E00004",
"engine_no":"CA6DM2-42E5153558354",
"body_type":"TRACTOR HEAD",
"horse_power":"420HP",
"cabin_type":"J6P E5",
"numwheels":"6W",
"unit_status":"Available",
"unit_location":null
},
{
"unit_id":"UCL2100002",
"rr_id":"RR2100002",
"make":"FAW",
"chassis_no":"LFWSRXRJ4M1E00007",
"engine_no":"CA6DM2-42E5153563283",
"body_type":"TRACTOR HEAD",
"horse_power":"420HP",
"cabin_type":"J6P E5",
"numwheels":"6W",
"unit_status":"Available",
"unit_location":null
}
]
И еще одна коллекция: $modifification = collect(DB::table('pd_jo_bodymodification')->get());
[
{
"row_id":2,
"jo_id":"JO2100003",
"jo_chassisno":"LFWSRXRJ4M1E00007",
"jo_convertedbody":"1st conversion",
"jo_mileage":"test",
"jo_serviceadvisor":"test",
"jo_servicerequest":"test",
"jo_remarks":"test"
},
{
"row_id":4,
"jo_id":"JO2100004",
"jo_chassisno":"LFWSRXRJ4M1E00007",
"jo_convertedbody":"2nd conversion",
"jo_mileage":"test",
"jo_serviceadvisor":"test",
"jo_servicerequest":"test",
"jo_remarks":"test"
},
{
"row_id":4,
"jo_id":"JO2100004",
"jo_chassisno":"LDFDRETFGGF000RE",
"jo_convertedbody":"OTHER CONVERSION",
"jo_mileage":"test",
"jo_serviceadvisor":"test",
"jo_servicerequest":"test",
"jo_remarks":"test"
}
]
Я хочу выяснить, есть ли у $unitinventory->chassis_no история изменений, поэтому я сделал это:
foreach ($unitinventory as $key => $value) {
$tmpmodif["conversion"] = $modifification->where('jo_chassisno',$value->chassis_no);
}
Which returns the following:
{
"conversion":[
{
"row_id":2,
"jo_id":"JO2100003",
"jo_chassisno":"LFWSRXRJ4M1E00007",
"jo_convertedbody":"1st conversion",
"jo_mileage":"test",
"jo_serviceadvisor":"test",
"jo_servicerequest":"test",
"jo_remarks":"test"
},
{
"row_id":4,
"jo_id":"JO2100004",
"jo_chassisno":"LFWSRXRJ4M1E00007",
"jo_convertedbody":"2nd conversion",
"jo_mileage":"test",
"jo_serviceadvisor":"test",
"jo_servicerequest":"test",
"jo_remarks":"test"
}
]
}
Теперь я хочу добавить историю конверсий в $unitinventory
коллекцию, чтобы она выглядела так:
$unitinventory =
[
{
"unit_id":"UCL2100001",
"rr_id":"RR2100001",
"make":"FAW",
"chassis_no":"LFWSRXRJ9M1E00004",
"engine_no":"CA6DM2-42E5153558354",
"body_type":"TRACTOR HEAD",
"horse_power":"420HP",
"cabin_type":"J6P E5",
"numwheels":"6W",
"unit_status":"Available",
"unit_location":null,
"conversion":[]
},
{
"unit_id":"UCL2100002",
"rr_id":"RR2100002",
"make":"FAW",
"chassis_no":"LFWSRXRJ4M1E00007",
"engine_no":"CA6DM2-42E5153563283",
"body_type":"TRACTOR HEAD",
"horse_power":"420HP",
"cabin_type":"J6P E5",
"numwheels":"6W",
"unit_status":"Available",
"unit_location":null,
"conversion":[
{
"row_id":2,
"jo_id":"JO2100003",
"jo_chassisno":"LFWSRXRJ4M1E00007",
"jo_convertedbody":"1st conversion",
"jo_mileage":"test",
"jo_serviceadvisor":"test",
"jo_servicerequest":"test",
"jo_remarks":"test"
},
{
"row_id":4,
"jo_id":"JO2100004",
"jo_chassisno":"LFWSRXRJ4M1E00007",
"jo_convertedbody":"2nd conversion",
"jo_mileage":"test",
"jo_serviceadvisor":"test",
"jo_servicerequest":"test",
"jo_remarks":"test"
}
]
}
]
Как сделать это возможным? Спасибо!
Комментарии:
1. С красноречивыми моделями и отношениями это было бы уже заранее подготовлено.
2. Как называются ваши таблицы, это можно решить с помощью красноречивых моделей.
Ответ №1:
Я решаю проблему с помощью этого подхода:
foreach ($tmpmodif as $key => $value) {
$unitinventory[$key] = array_merge( (array)$value, (array)["conversion"=>$modifification->where('jo_chassisno',$value->chassis_no)]);
}
Объединение массива внутри foreach
.