2011-09-19 121 views
1

我有一个“Doctrine2”的问题。当试图保存关系“ManyToMany”或“OneToOne”PHP会导致异常错误!我留下错误,以便你能帮助我。保存错误OneToMany和ManyToMany与Doctrine 2的关系

致命错误:未捕获的异常'InvalidArgumentException'带消息'通过关系'实体\用户#权限'找到的新实体WAS未配置为级联持久化实体操作:实体\权限@ 0000000012feb12000000000616126d4。显式或持久化新实体对关系设置级联持久操作。如果通过执行实体'Entities \ Privilege#__toString()'无法找出导致问题的原因以获取线索。 “在C:\ Program Files文件\的EasyPHP-5.3.4.0 \ WWW \ mframework_2 \ phpinc \原则\ 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; 

我有同样的问题丝毫多对多关系

三江源非常多!

回答

3

添加级联= { “坚持” 到你的特权领域:

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

执行下列操作之一:

1-坚持使用既为用户和电子邮件对象

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

2-将级联添加到您的实体

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