从 csv 数据填充多对一字段的固定装置

Fixtures to popualte ManyToOne field from csv data

实体 categorytype 具有多对一关系,因此每个类别都有一个类型,并且每个类型可以与多个类别相关。

我加载了 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 读取 id 然后搜索 type 具有此 id 的对象,将该对象映射到当前 category).

请记住,我无法生成随机 ID。 有人可以帮忙吗?

我不知道你的 类 是什么样子,但你似乎将类型的原始 ID 保存在名为 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++;
}

希望对您有所帮助。