Мне нужно сделать что-то вроде этого:
10 в таблицу с именами 'test0' - 'test9').category0» - «category9».changetest0 был найден раньше - пропустить, если не найден - создать.Мой код (я думаю, что это неверно):
$em = $this->container->get('doctrine.orm.entity_manager');
for ($i = 0; $i < 10; $i++) {
$name = 'test' . $i;
$category = $em->getRepository(Category::class)->findByName($name);
if (isset($category) && $category == '') {
$category->setName('category' . $i);
$em->persist($category);
$em->flush();
} elseif ($em->getRepository(Category::class)->findByName('category' . $i)->getName() == 'category' . $i) {
return;
} else {
$category->setName('category' . $i);
$em->flush();
}
}
Есть идеи, как это сделать правильно?






Я думаю, вам не хватает этого:
Вы не используете EntityManager как service. Используйте $this->getDoctrine()->getManager();;
$em = $this->getDoctrine()->getManager();
for ($i = 0; $i < 10; $i++) {
$name = 'test' . $i;
$category = $em->getRepository(Category::class)->findByName($name);
if ($category instanceof Category && !is_null($category)){
$category->setName('category' . $i);
$em->persist($category);
$em->flush();
}
//After if else you have to set `$category` to `null`
$category = null;
}
Load fixtures (add 10 records....где ты это добавляешь?