https://csv.thephpleague.com/9.0/
Ich habe es geschafft, die ersten Schritte zu unternehmen, nämlich einen Befehl zu erstellen, die CSV-Datei zu lesen und ein „Echo“ darauf auszuführen.
Code: Select all
protected function execute(
InputInterface $input,
OutputInterface $output
): int {
$io = new SymfonyStyle($input, $output);
$io->title('Import CSV ...');
$csv = Reader::from('src/Data/testuser.csv', 'r');
$csv->setHeaderOffset(0);
$csv->setEscape('');
$records = $csv->getRecords();
echo $csv->toString();
$io->success('Great CSV in DB !');
return Command::SUCCESS;
}
Code: Select all
foreach ($records as $record){
$user = (new User())
->setName($record['name'])
->setSurname($record['surname'])
->setEmail($record['email'])
->setRoles($record['roles'])
->setPlainPassword($record['plainPassword'])
;
$this->em->persist($user);
}
$this->em->flush();
UPDATE VOM 12.02.25:
Ich habe alle Antworten hier gelesen und danke Ihnen vielmals für Ihre Hilfe!
Leider denke ich, dass das Problem in der Verbindung zwischen der CSV und der Datenbank liegt, wahrscheinlich auf Entitätsebene, oder vielleicht in der Transkription von CSV in die Datenbank? Vielleicht das „;“?
Ich habe nach Ryans Antwort ein paar Tests durchgeführt
Code: Select all
foreach ($records as $record){
$user = (new User())
->setName($record['name'] ?? '')
->setSurname($record['surname'] ?? '')
->setEmail($record['email'] ?? '')
->setRoles($record['roles'] ?? [' '])
->setPlainPassword($record['plainPassword'] ?? ' ')
;
$this->em->persist($user);
if (++$i % 50 === 0) {
$this->em->flush();
$this->em->clear();}}
Mobile version