这段代码让我发疯。
假设我已经完成所有这些操作的实体拥有我用getter调用的所有成员(在类文件的db上;此外,在db上,所有值都被插入)。
$this->logger->debug('INV ROOM RATES CAPACITY - $ROOM ID: '.$camera->getId());
$this->logger->debug('INV ROOM RATES CAPACITY - $ROOMCAPACITY: .$camera->getCapienza());
$this->logger->debug('INV ROOM RATES CAPACITY - CAMERA DB ID: '.$camera->getId());
这将输出以下内容
[2013-02-11 14:17:32] app.DEBUG: INV ROOM RATES CAPACITY - $ROOM ID: 14 [] []
[2013-02-11 14:17:32] app.DEBUG: INV ROOM RATES CAPACITY - $ROOMCAPACITY: [] []
[2013-02-11 14:17:32] app.DEBUG: INV ROOM RATES CAPACITY - CAMERA DB ID: [] []
似乎->getCapienza()
方法搞乱了所有事情(第二个getter在同一个对象上,不返回先前的值)。
显然,不会引发任何错误或异常。
这里发生了什么?有任何想法吗?我被困了几个小时......
public function getCapienza()
{
return $this->capienza;
}
答案 0 :(得分:1)
由于您刚刚告诉我您有时会清除EntityManager,我会进一步深入研究它。
当合并https://github.com/doctrine/doctrine2/pull/406时,将在Doctrine ORM 2.4中修复已知问题。
问题出现的原因是以下一段代码:https://github.com/doctrine/doctrine2/blob/2.3.2/lib/Doctrine/ORM/UnitOfWork.php#L1724-L1780
基本上,不可能合并或一般使用与EntityManager分离的代理(您之前应该延迟加载它们)。
您遇到的问题与http://www.doctrine-project.org/jira/browse/DDC-1734
有关临时解决方案是重新获取您要使用的数据,而不是回收已分离的实例。