Zend framework Zend+;Doctrine2:如何使用ArrayCollections()正确刷新实体?
我正在开始我的第一个Zend框架+条令2项目,我有一个问题。我使用PostgreSQL 9和Apache 2.2 我有以下实体(实体和属性的名称仅用于此示例):Zend framework Zend+;Doctrine2:如何使用ArrayCollections()正确刷新实体?,zend-framework,orm,doctrine,doctrine-orm,Zend Framework,Orm,Doctrine,Doctrine Orm,我正在开始我的第一个Zend框架+条令2项目,我有一个问题。我使用PostgreSQL 9和Apache 2.2 我有以下实体(实体和属性的名称仅用于此示例): 您的关系都是多人关系,因此不应涉及阵列集合 因为没有集合,所以您不想添加素材,而是想设置素材: 在实体1中: public function setEntity2(Entity2 $entity2){ $this->entity2 = $entity2 return $this; } 在控制器中: <?ph
您的关系都是多人关系,因此不应涉及阵列集合
因为没有集合,所以您不想添加
素材,而是想设置
素材:
在实体1中:
public function setEntity2(Entity2 $entity2){
$this->entity2 = $entity2
return $this;
}
在控制器中:
<?php
class IndexController extends Zend_Controller_Action
{
public function init()
{
$this->doctrine = Zend_Registry::get('doctrine');
$this->em = $this->doctrine->getEntityManager();
}
public function indexAction()
{
$ent2 = new Xproject\Entities\Entity2();
$this->em->persist($ent2);
$ent3 = new Xproject\Entities\Entity3();
$ent3->setAtt1('xyz');
$this->em->persist($ent3);
$ent4= new Xproject\Entities\Entity4();
$ent4->setAtt1('abc');
$this->em->persist($ent4);
//1st flush
$this->em->flush();
$ent1= new Xproject\Entities\Entity1();
$ent1->setAtt1(350.00);
$ent1->addEntity2(ent2);
$ent1->addEntity3(ent3);
$ent1->addEntity4(ent4);
$this->em->persist($ent1);
//2nd flush
//$this->em->flush();
}
}
$entity1->setEntity2($entity2);
就这样。像$this->entity2->add()这样的调用正在工作,因为您正在将这些属性初始化为ArrayCollection。但教条只是忽视了它们
换句话说,对于*ToOne关系,对象属性只是外部实体类型。将它们视为简单的值,并通过典型的set*()变异体设置它们。在try…catch
和var_dump
异常中围绕indexAction
的内容。(InvalidArgumentException)#176(7){[“message”:protected]=>string(275)“通过未配置为级联持久化操作的关系找到了新实体:条令\公共\集合\ArrayCollection@0000000057ee7b54000000006e20d44c.显式持久化新实体或在关系上配置级联持久化操作。“[“字符串”:“异常”:private]=>string(0)”“[“代码”:protected]=>int(0)[“file”:protected]=>string(115)/***反向端*@var entity1*@OneToMany(targetEntity=“entity1”,mappedBy=“entity2”,cascade={“persist”})*/添加在“cascade={“persist”}”行的末尾,但仍然存在相同的问题$ent1->addEntity2(ent2);
应该是$ent1->$addEntity2($ent2)这就是问题所在,蒂姆德夫。非常感谢大家
$entity1->setEntity2($entity2);