Doctrine2和Symfony2 - 为什么这个搞砸了所有的东西?

时间:2013-02-11 13:28:31

标签: symfony doctrine-orm

这段代码让我发疯。

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

1 个答案:

答案 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

有关

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