从 csv 数据填充多对一字段的固定装置
Fixtures to popualte ManyToOne field from csv data
实体 category
与 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 读取 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++;
}
希望对您有所帮助。
实体 category
与 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 读取 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++;
}
希望对您有所帮助。