Как правильно использовать пакет League/Csv [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как правильно использовать пакет League/Csv [закрыто]

Сообщение Anonymous »

Я пытаюсь использовать пакет League/csv, чтобы создать опцию, позволяющую пользователям вставлять CSV-файл в базу данных сайта через интерфейс выбора файлов.
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. Я нашел несколько «решений» в Интернете, но большинство из них кажутся устаревшими.

Код: Выделить всё

   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();
Я читал в документации об использовании PDOStatement, но это меня смутило. Я видел видео, где кто-то использует этот пакет без PDO, но этому видео уже 8 лет.
ОБНОВЛЕНИЕ ОТ 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();}}
Я получаю что-то в свою базу данных, но только пустые поля! Почему он не возвращает содержимое моего CSV-файла?

Подробнее здесь: https://stackoverflow.com/questions/798 ... v-properly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»