У меня проблема с сбором laravel с результатом чанка. Он запускается только один раз в цикле.
У меня есть 204 элемента в массиве, и я хочу разделить его на 100 каждый, используя вспомогательный сборщик laravel. Он должен работать три раза, но я получил только один раз.
private function __migrateDistricts()
{
DB::beginTransaction();
try {
$file = 'resources/csv/districts.csv';
$csv = array_map('str_getcsv', file($file));
$table = 'districts';
$collection = collect($csv);
$arr_districts = array();
foreach ($collection->chunk(100) as $districts) {
foreach ($districts as $dist) {
array_push($arr_districts, $this->__transformDistricts($dist));
}
DB::table($table)->insert($arr_districts);
DB::commit();
}
} catch (\Exception $e) {
DB::rollBack();
}
}
private function __transformDistricts($district)
{
$code = substr($district[3],0,2);
$pro = DB::table('provinces')->where('code', $code)->first();
return [
'province_id' => $pro->id,
'name_kh' => $district[1],
'name_en' => $district[2],
'code' => $district[3],
];
}
После запуска я получил только 100 записей в таблице. В таблице должно быть 204 записи. Что не так с моим кодом? Спасибо