Doctrine\ArrayCollection类的属性$\元素已更改,无法取消序列化数据库中的旧对象

Doctrine\ArrayCollection类的属性$\元素已更改,无法取消序列化数据库中的旧对象,doctrine,Doctrine,财产 private $_elements 条令\Common\Collections\ArrayCollection的名称已重命名为 private $elements 但我在数据库中序列化了object ArrayCollection。现在,我的数组集合为空。当我转储它时,我可以看到$\u元素不是空的,我想知道如何发出命令来更改它 我已经尝试过: 用mysql替换函数,但我有一个通知:取消序列化错误 使用ReflectionObject,但未定义属性$\u元素 runkit\u方法\u

财产

private $_elements 
条令\Common\Collections\ArrayCollection的名称已重命名为

private $elements
但我在数据库中序列化了object ArrayCollection。现在,我的数组集合为空。当我转储它时,我可以看到$\u元素不是空的,我想知道如何发出命令来更改它

我已经尝试过:

用mysql替换函数,但我有一个通知:取消序列化错误 使用ReflectionObject,但未定义属性$\u元素 runkit\u方法\u重新定义,我没有访问权限
如果您的ArrayCollection仅在内部使用标量元素,则此方法效果良好:

//use following line only if you already have an unserialzed ArrayCollection
$data = serialize($data);

$data = unserialize($data);
$data = var_export($data, true);
$data = preg_replace('#[A-Za-z\\\]*::__set_state#', '', $data);
$data = eval('return '.$data.';');
$data = new ArrayCollection($data['_elements']);
如果在ArrayCollection中存储了一些其他类,它们将转换为普通数组

警告:请不要在生产中使用此代码,因为eval是邪恶的,并且是一个高度潜在的安全问题,因此仅用于恢复序列化数据