['prop' => 'nazvanie_organizacii', 'required' => true], 'inn' => ['prop' => 'inn_organizacii'], 'email' => ['prop' => 'email'], 'phone' => ['prop' => 'telefon'], 'types' => ['prop' => 'vid_organizacii'] ]; public function collection(Collection $collection) { $collection->each(function($row) { if ($row = $this->mapData($row)) $this->importRow($row); }); } public function importRow($row) { $row['inn'] = $row['inn'] ?? $row['name']; $row['types'] = $this->translateTypes($row['types'] ?? ''); Company::getByData($row); } public function translateTypes(string $types): array { $aTypes = [ 'изготовитель' => CompanyType::PRODUCER, 'проектировщик' => CompanyType::DESIGNER ]; return collect(explode(';', $types))->map(function($type) use($aTypes) { return $aTypes[mb_strtolower(trim($type))] ?? null; })->filter(function($type) {return $type;})->all(); } }