У меня есть коллекция из запроса с именем $ dataItemregistrationdetail:
$dataItemregistrationdetail = DB::table('itemregistrationdetail')
->join('sections', 'itemregistrationdetail.sectionid', '=', 'sections.sectionid')
->join('categories', 'itemregistrationdetail.categoryid', '=', 'categories.categoryid')
->join('kategori_kursus', 'itemregistrationdetail.kategoriid', '=', 'kategori_kursus.kategoriid')
->join('devices', 'itemregistrationdetail.deviceid', '=', 'devices.deviceid')
->select('itemregistrationdetail.*', 'sections.sectionname', 'categories.categoryname', 'kategori_kursus.kategorikursus', 'devices.kursusname')
->where('itemregistrationdetail.itemregistrationid', $id)
->get();
Эта коллекция выдает следующее:
Collection {#557 ▼
#items: array:4 [▼
0 => {#552 ▼
+"ItemRegistrationDetailID": 64852
+"ItemRegistrationID": 194
+"SectionID": 1
+"CategoryID": 1
+"KategoriID": 1
+"DeviceID": 1129
+"BrandID": 0
+"ModelID": 0
+"SerialNo": "SEKOLAH MENENGAH"
+"StatusID": 1
+"Imei": "MAKTAB PERGURUAN"
+"No_tel": ""
+"Comments": ""
+"daymula_kursus": 9
+"monthmula_kursus": "May"
+"yearmula_kursus": 2011
+"daytamat_kursus": 28
+"monthtamat_kursus": "July"
+"yeartamat_kursus": 2011
+"sectionname": "I91"
+"categoryname": "GURU BESAR"
+"kategorikursus": "KURSUS (UMUM)"
+"kursusname": "KURSUS ASAS"
}
1 => {#549 ▶}
2 => {#555 ▶}
3 => {#558 ▶}
]
}
У меня был другой массив для дат.Значением массива является дата для каждого элемента $ dataItemregistration.Массив дат с именем $ datatarikhMula:
$datatarikhMula = DB::table('itemregistrationdetail')
->select('itemregistrationdetail.daymula_kursus', 'itemregistrationdetail.monthmula_kursus', 'itemregistrationdetail.yearmula_kursus')
->where('itemregistrationdetail.itemregistrationid', $id)
->get();
Я отформатировал вышеупомянутую коллекцию в этом массиве:
//**************** format the value of the date************************
$dates = json_decode($datatarikhMula, true);
$dataTarikhMula = array();
foreach($dates as $date)
{
$dataTarikhMula[] = implode(' ', array_values($date));
}
Выходные данные для массива dataTarikhMula:
array:4 [▼
0 => "9 May 2011"
1 => "24 0 2013"
2 => "12 0 2013"
3 => "7 April 2014"
]
Мне нужно добавить каждую дату в каждую строку dataItemregistrationdetail, чтобы в dataItemregistrationdetail содержался дополнительный атрибут с именем date, содержащий значение из массива dataTarikhMula.Итак, он будет выводиться так:
Collection {#557 ▼
#items: array:4 [▼
0 => {#552 ▼
+"ItemRegistrationDetailID": 64852
+"ItemRegistrationID": 194
+"SectionID": 1
+"CategoryID": 1
+"KategoriID": 1
+"DeviceID": 1129
+"BrandID": 0
+"ModelID": 0
+"SerialNo": "SEKOLAH MENENGAH"
+"StatusID": 1
+"Imei": "MAKTAB PERGURUAN"
+"No_tel": ""
+"Comments": ""
+"daymula_kursus": 9
+"monthmula_kursus": "May"
+"yearmula_kursus": 2011
+"daytamat_kursus": 28
+"monthtamat_kursus": "July"
+"yeartamat_kursus": 2011
+"sectionname": "I91"
+"categoryname": "GURU BESAR"
+"kategorikursus": "KURSUS (UMUM)"
+"kursusname": "KURSUS ASAS"
+"date": "9 May 2011" <------------------added value
}
1 => {#549 ▶}
2 => {#555 ▶}
3 => {#558 ▶}
]
}
Как добавить значение в каждый элемент массива $ dataItemregistrationdetail?
Я отредактировал код в предложенном вами коде:
$dataItemregistrationdetail->map(function ($detail) {
$detail['date'] = "{$detail->daymula_kursus} {$detail->monthmula_kursus} {$detail->yearmula_kursus}";
return $detail;
});
Но ошибка появляется, как прокомментировано ниже.