如何在删除元素之前备份ArrayCollection?

时间:2018-03-12 09:57:51

标签: symfony unset arraycollection

所以我想存储ArrayCollection值,删除它然后在另一个实体中重用它。 但似乎值是通过引用传递的,所以当它取消设置时,存储的值也会被取消设置。

$children = $role->getChildren();
var_dump(count($children)); // int(1)
$role->removeAllChildren();
var_dump(count($children)); // int(0)

/** **/

/**
 * @return Role
 */
public function removeAllChildren()
{
    foreach ($this->children as $child) {
        $this->removeChild($child);
    }

    return $this;
}


/**
 * @param Role $child
 *
 * @return Role
 */
public function removeChild(Role $child)
{
    if ($this->hasChild($child)) {
        $this->children->removeElement($child);

        // this calls unset($this->elements[$key]);
    }

    return $this;
}

那么在删除之前有没有办法存储arrayCollection值?

顺便说一句,我在使用Symfony 3.4。

1 个答案:

答案 0 :(得分:1)

ArrayCollection是一个对象,您可以在此对象上使用简单$chilrenCopy = clone $obj->getChildren();,该对象将复制对象并分配给新引用。也可以使用名为Memento

的设计模式