agency, ',')) { // Jika multiple, pecah berdasarkan koma $agencyNames = explode(',', $legacyIssue->agency); } else { // Jika single, tetap jadikan array agar bisa di-loop $agencyNames = [$legacyIssue->agency]; } // Hapus spasi pada nama agency $agencyNames = array_map('trim', $agencyNames); // Ambil semua agency yang ada di database yang sesuai dengan nama agency // Opsi 1 // $agencies = GovernmentAgency::whereIn('name', $agencyNames)->get(); // $agencies = GovernmentAgency::whereIn('name', $agencyNames)->get(); // Opsi 2 $agencies = GovernmentAgency::where(function ($query) use ($agencyNames) { foreach ($agencyNames as $name) { $query->orWhere('name', 'LIKE', "%$name%"); } })->get(); // Membuat array untuk menyimpan id agency yang ditemukan $agencyIds = []; // Loop untuk mencocokkan nama agency dengan id foreach ($agencyNames as $name) { // Cari agency yang cocok dengan nama ini $agency = $agencies->firstWhere('name', $name); if ($agency) { $agencyIds[] = $agency->id; }else{ $otherAgency = GovernmentAgency::where('name', 'Lainnya')->first(); Log::info("OPD yang tidak cocok: ". $name); $agencyIds[] = $otherAgency->id; } } // Membuat issue management baru dan mengaitkan dengan agency $createdIssueManagement = IssueManagement::create([ 'id' => $legacyIssue->id, 'location_id' => $legacyIssue->locus, 'sub_location_id' => $legacyIssue->sub_locus, 'classification_id' => $legacyIssue->classification, 'sub_classification_id' => $legacyIssue->sub_classification, 'issue' => $legacyIssue->issue, 'response' => $legacyIssue->response, 'description' => $legacyIssue->description, 'created_at' => $legacyIssue->created_at, 'updated_at' => $legacyIssue->updated_at, 'deleted_at' => $legacyIssue->deleted_at, 'enhancer_id' => in_array($legacyIssue->enhancer, [0, 3]) ? 1 : $legacyIssue->enhancer, 'media_monitoring_id' => $legacyIssue->media_monitoring, ]); // Attach agency IDs ke issue management $createdIssueManagement->governmentAgencies()->attach($agencyIds); } } }