ошибка сохранения отношений OneToMany и ManyToMany с Doctrine 2 - PullRequest
1 голос
/ 19 сентября 2011

У меня проблема с "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(true);
            $user->setUsername('xxx');
            $user->setPassword('xxx');

    $email = new \Entities\Email();
            $email->setEmail(xxx');
            $email->setType('xxx');

    $user->addEmail($email);

    $this->em->persist($user);
            $this->em->flush();

В Entitie User у меня есть это:

</p>

<pre><code>/** @OneToOne(targetEntity="Privilege") */
    protected $privilege;
</code>

У меня та же проблема с отношениями ManyToMany!

Спасибо большое!

Ответы [ 2 ]

3 голосов
/ 19 сентября 2011

Добавьте cascade = {"persist"} в свое поле привилегий:

/** @OneToOne(cascade={"persist"}, targetEntity="Privilege") */
protected $privilege;
0 голосов
/ 08 апреля 2015

Выполните одно из следующих действий:

1 - использовать постоянство для объектов пользователя и электронной почты

$this->em->persist($user);
$this->em->persist($email);
$this->em->flush();

или

2 - добавить каскад к вашей сущности

/** @OneToOne(targetEntity="Privilege", cascade={"persist"}) */
...