https://csv.thephpleague.com/9.0/
Мне удалось сделать первые шаги: создать команду, прочитать CSV-файл и выполнить над ним «эхо».
Код: Выделить всё
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;
}
Код: Выделить всё
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();
ОБНОВЛЕНИЕ ОТ 12.02.25:
Я прочитал все ответы здесь и большое спасибо за вашу помощь!
К сожалению, я думаю, что проблема заключается в связи между CSV и базой данных, возможно, на уровне сущности или, возможно, в транскрипции из CSV в базу данных? Может быть, «;»?
После ответа Райана я провел несколько тестов
Код: Выделить всё
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();}}
Подробнее здесь: https://stackoverflow.com/questions/798 ... v-properly
Мобильная версия