Приспособления для заполнения поля ManyToOne из данных CSV - PullRequest
0 голосов
/ 12 марта 2019

Сущность category имеет отношение ManyToOne с type, поэтому каждая категория имеет один тип, и каждый тип может относиться ко многим категориям.

Я загрузил type форму csv следующим образом:

$types = fopen(__DIR__.'/types.csv','r');        
while (!feof($types)){

        $line = fgetcsv($types);
        $data = str_getcsv($line[0],';');
        $t[$i] = new Type();
        $t[$i]->setIdType($data[0]);
        $t[$i]->setDescription($data[1]);

        $manager->persist($t[$i]);
        $manager->flush();
        $i++;
    }

    fclose($agregatnational);

Теперь я должен загрузить categories таким же образом: чтение из CSV и вставка значений в поле отношения без разрыва отношения (прочитайте идентификатор из CSV, затем найдите type объект, имеющий этот идентификатор, сопоставьте этот объект с текущим category).

Имейте в виду, что я не могу генерировать случайные идентификаторы.Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 12 марта 2019

Я не знаю, как выглядят ваши классы, но похоже, что вы сохраняете исходный идентификатор типа в поле с именем idType.Если это так, вы можете использовать ist, чтобы получить постоянную сущность:

$categories = fopen(__DIR__.'/categories.csv','r');        
while (!feof($categories)){

    $line = fgetcsv($categories);
    $data = str_getcsv($line[0],';');

    $type = $manager->getRepository('Type::class')->findOneBy(['idType' => data[1]);

    $new = new Category();
    $new->setType($type);
    $new->setName($data[0);

    $manager->persist($new);
    $manager->flush();
    $i++;
}

Надеюсь, это поможет.

...