1

这段代码快把我逼疯了。

假设我已经完成所有这些操作的实体具有我用 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;
}
4

1 回答 1

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有关

一个临时解决方案是重新获取要使用的数据,而不是回收分离的实例。

于 2013-02-11T14:10:37.073 回答