我在symfony2(doctrine)中使用以下代码作为我的多对多关系
实体:
/**
* @ORM\ManyToMany(targetEntity="BizTV\ContainerManagementBundle\Entity\Container", inversedBy="videosToSync")
* @ORM\JoinTable(name="syncSchema")
*/
private $syncSchema;
public function __construct()
{
$this->syncSchema = new \Doctrine\Common\Collections\ArrayCollection();
}
public function addSyncSchema(\BizTV\ContainerManagementBundle\Entity\Container $syncSchema)
{
$this->syncSchema[] = $syncSchema;
}
控制器:
$entity->addSyncSchema($container);
$em->flush();
现在,我如何使用它来删除关系?我是否需要向我的实体添加方法,如removeSyncSchema()?那会是什么样的?
答案 0 :(得分:21)
您在这里寻找ArrayCollection::removeElement
方法。
public function removeSchema(SchemaInterface $schema)
{
$this->schemata->removeElement($schema)
return $this;
}
提示强>
您可以使用ArrayCollection::add
向现有集合添加元素。 OOP。
在某些情况下,您可能还想在添加元素之前检查已包含元素。
public function addSchema(SchemaInterface $schema)
{
if (!$this->schemata->contains($schema)) {
$this->schemata->add($schema);
}
return $this;
}