Ошибка сохранения отношений OneToMany и ManyToMany с Doctrine 2
У меня проблема с "Doctrine2". При попытке сохранить связь "ManyToMany" или "OneToOne" PHP оставит ошибку исключения! Я оставляю ошибку, чтобы вы могли мне помочь.
Неустранимая ошибка: необработанное исключение "InvalidArgumentException" с сообщением "Был обнаружен новый объект через отношение" Entities \ User # privilege ", который не был настроен для каскадного сохранения операций для объекта: Entities \ Privilege @ 0000000012feb12000000000616126d4. Явное или постоянное сохранение нового объекта настройки каскадного сохранения Операции на взаимосвязи. Если вы не можете выяснить, что вызывает проблему, реализовав сущность Entities \ Privilege # __toString (), чтобы получить подсказку. "в C: \ Program Files \ EasyPHP-5.3.4.0 \ www \ mframework_2 \ phpinc \ Doctrine \ ORM \ UnitOfWork.php в строке 576
Код, который я использую для поддержания отношений:
$ user = new \ Entities \ User (); $ User-> SetActive(истина); $ User->setUsername('ххх'); $ User-> SetPassword('ххх'); $ email = new \ Entities \ Email (); $ Email->setEmail(ххх '); $ Email-> SetType('ххх'); $ User-> AddEmail($ электронная почта); $ This->em-> сохраняются ($ пользователю); $ This->em-> заподлицо ();
В Entitie User у меня есть это:
/** @OneToOne(targetEntity="Privilege") */ protected $privilege;
У меня та же проблема с отношениями ManyToMany!
Большое спасибо!
2 ответа
Добавьте cascade={"persist"} в свое поле привилегий:
/** @OneToOne(cascade={"persist"}, targetEntity="Privilege") */
protected $privilege;
Сделайте одно из них:
1 - использовать постоянство для объектов пользователя и электронной почты
$this->em->persist($user);
$this->em->persist($email);
$this->em->flush();
или же
2- добавить каскад к вашей сущности
/** @OneToOne(targetEntity="Privilege", cascade={"persist"}) */