错误保存与Doctrine 2的OneToMany和ManyToMany关系

时间:2011-09-19 08:06:02

标签: php orm doctrine doctrine-orm one-to-one

我对“Doctrine2”有疑问。当试图保存关系“ManyToMany”或“OneToOne”PHP留下异常错误!我留下错误,以便你可以帮助我。

致命错误:未捕获异常'InvalidArgumentException',消息'通过关系找到新实体WAS'实体\用户#权限'未配置为级联持久化实体操作: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用户中我有:

/** @OneToOne(targetEntity="Privilege") */
    protected $privilege;

我对ManyToMany关系有同样的问题!

非常感谢!

2 个答案:

答案 0 :(得分:3)

将cascade = {“persist”}添加到您的权限字段:

/** @OneToOne(cascade={"persist"}, targetEntity="Privilege") */
protected $privilege;

答案 1 :(得分:0)

做其中一项:

1-使用持久保存用户和电子邮件对象

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

2-将cascade添加到您的实体

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