如何在删除元素之前备份 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上。

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

相关内容

  • 没有找到相关文章

最新更新