Ошибка сохранения отношений 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"}) */
Другие вопросы по тегам