Symfony2: Как удалить элемент из доктрины ArrayCollection (отношение "многие ко многим")?

Я использую следующий код для моего отношения "многие ко многим" в symfony2 (doctrine)

сущности:

/**
 * @ORMManyToMany(targetEntity="BizTVContainerManagementBundleEntityContainer", inversedBy="videosToSync")
 * @ORMJoinTable(name="syncSchema")
 */
private $syncSchema;

public function __construct()
{
    $this->syncSchema = new DoctrineCommonCollectionsArrayCollection(); 
}

public function addSyncSchema(BizTVContainerManagementBundleEntityContainer $syncSchema)
{
    $this->syncSchema[] = $syncSchema;
}
:
$entity->addSyncSchema($container);
$em->flush();

теперь, как я могу использовать это, чтобы удалить связь? Нужно ли добавлять метод к моей сущности, такой как removeSyncSchema()? Как бы это выглядело?

1 ответов


Вы ищите ArrayCollection::removeElement способ здесь.

public function removeSchema(SchemaInterface $schema)
{
    $this->schemata->removeElement($schema)

    return $this;
}

совет:

можно использовать ArrayCollection::add добавить элементы в существующую коллекцию. ООП.

в некоторых случаях вы также можете проверить, содержит ли уже элемент перед его добавлением.

public function addSchema(SchemaInterface $schema)
{
    if (!$this->schemata->contains($schema)) {
        $this->schemata->add($schema);
    }

    return $this;
}