所以我想存储 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的设计模式