Я получаю эту ошибку:
[Symfony\Component\Debug\Exception\ContextErrorException] Notice: Undefined index: 000000000fa82729000000006e17190b
Я попробовал все советы от this post.
Мой код намного проще, чем коды других плакатов (вопрос об этой проблеме).
$em = $this->getContainer()->get('doctrine')->getManager();
$pictureUrlRepository = new ProductItemPictureUrlRepository($em);
$pictures = $pictureUrlRepository->findAll();
for ($i = 0; $i < 4; ++$i) {
$productItem = $pictures[$i]->getProductItem();
dump($productItem->getId());
$fileName = 'file_' . $i;
$productItemPicture = new ProductItemPicture();
$productItemPicture->setProductItem($productItem);
$productItemPicture->setFile($fileName);
$productItemPicture->setPosition(1);
$productItemPicture->setSize(1000);
$productItemPicture->setWidth(1200);
$productItemPicture->setHeight(1000);
$em->persist($productItemPicture);
$em->flush();
$em->clear();
unset($productItemPicture);
}
Чтобы показать вам, что я пробовал советы от приведенной выше ссылки, вот более сложный код с реализованными советами (но результат все тот же):
$em = $this->getContainer()->get('doctrine')->getManager();
$pictureUrlRepository = new ProductItemPictureUrlRepository($em);
$pictures = $pictureUrlRepository->findAll();
foreach ($em->getEventManager()->getListeners() as $event => $listeners) {
foreach ($listeners as $listener) {
$em->getEventManager()->removeEventListener($event, $listener);
}
}
$batchSize = 2;
for ($i = 0; $i < 4; ++$i) {
$productItem = $pictures[$i]->getProductItem();
dump($productItem->getId());
$fileName = 'file_' . $i;
$productItemPicture = new ProductItemPicture();
$productItemPicture->setProductItem($productItem);
$productItemPicture->setFile($fileName);
$productItemPicture->setPosition(1);
$productItemPicture->setSize(1000);
$productItemPicture->setWidth(1200);
$productItemPicture->setHeight(1000);
$productItemPicture->setCreated(new \DateTime('20.1.2017'));
$productItemPicture->setUpdated(new \DateTime('20.1.2017'));
$em->persist($productItemPicture);
if (($i % $batchSize) === 0) {
$em->flush();
$em->clear();
}
}
$em->flush();
$em->clear();
Только когда это Я комментирую (отключает) $ em-> clear(); line, работает. В чем дело с тем, что не работает clear()? Что я могу ожидать при выполнении тысяч записей в БД и не работает clear()?
Не могли бы вы отметить «линию», из которой исходит эта ошибка? Может быть, из кода, который вы выполняете сразу после цикла? –
Когда я комментирую $ em-> clear(); оно работает. Итак, это линия. – Neon
Сколько у вас фотографий? 5? Меньше? – Veve