我对“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关系有同样的问题!
非常感谢!
答案 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"}) */