Доброго времени суток.
Есть такие сущности:
Появилась задача создать связь "многие ко многим" между категориями и брендами. Написан вот такое консольное решение:
public function parseBrands()
{
$em = $this->em;
$categories = $em->getRepository('MainCatalogBundle:Categories')->findAll();
foreach ($categories as $category) {
$products = $category->getProducts();
echo $category->getId();
foreach ($products as $iteration => $product) {
$brand = $product->getBrand();
if (!$brand || $category->getBrands()->contains($brand)) {
break;
}
$category->getBrands()->add($brand);
$brand->getCategories()->add($category);
if ($iteration % 200 === 0) {
$em->flush();
$em->clear();
}
}
$em->flush();
$em->clear();
}
}
При его выполнении вылазит вот такая ошибка:
[Doctrine\ORM\ORMInvalidArgumentException]
A new entity was found through the relationship 'Main\CatalogBundle\Entity\Brand#categories' that was not configured to cascade persist operations for enti
ty: Main\CatalogBundle\Entity\Categories@0000000067e0af1c0000000002662436. To solve this issue: Either explicitly call EntityManager#persist() on this unkn
own entity or configure cascade persist this association in the mapping for example @ManyToOne(..,cascade={"persist"}). If you cannot find out which entit
y causes the problem implement 'Main\CatalogBundle\Entity\Categories#__toString()' to get a clue.
Добавление
cascade={"persist"} в сущности не помогает. В чем проблема? Новая сущность же не создается и EntityManager автоматически начинает следить за вызываемыми сущностями, не?