2015-09-30 32 views
0

在ZF2中开始使用原则并需要从持久化中删除一个实体。ZF2 - 原则 - 删除一个持久化的实体

$result = $em->getRepository('zmpim\Entity\Collection')->findOneBy(array('id'=>$id)); 
    $products = $result->getProducts(); 
    $this->assertSame(1, count($products)); 
    $this->assertSame(3, count($products[0]->getFields())); 
    $em->remove($result); 
    $em->persist($result); 
    $em->flush($result); 

该示例在单元测试中。我希望,该实体在它之后被删除。但是实体和一些OneToMany实体仍然存在。

铜n00n

回答

0

你在找什么是cascade={"remove"}。看看这个问题:

Understanding Doctrine Cascade Operations

你在你的实体的关联注释定义级联选项是这样的:

/** 
* @ORM\OneToMany(/* ... */ cascade={"remove"}) 
*/ 

这适用于每一种课程的关联。

主义文档:

http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-associations.html#transitive-persistence-cascade-operations

在一个单独的单元测试,你会得到实体的元数据来检查协会的级联规范通过调用类似:

$mapping = $entityManager->getClassMetadata('zmpim\Entity\Collection') 
    ->getAssociationMapping('products'); 
$this->assertTrue($mapping['isCascadeRemove']); 
+0

尝试,并且很好地测试映射,但它不会失败。这似乎是正确的。它不删除产品集合是其成员的实体... – n00n

+0

很酷。发现失败....其他。 – n00n