0

我想从数据库中获取旧实体以更改保存历史记录。

现在我有一个代码:

// Old version 1!
$app = $appManager->findByAppleId(547409501);
$app->setVersion('1.1');
$oldApp = $appManager->findByAppleId(547409501);
print $app->getVersion() . '<br />' . $oldApp->getVersion();

但是应用程序和旧应用程序都有 1.1 版本。在 DB 应用程序中有版本 1

附言

->findByAppleId - 获取存储库并使用“查找”功能(Apple ID 是主键)

4

2 回答 2

0

如果必须更改字段,可以使用:

http://docs.doctrine-project.org/en/latest/reference/events.html#preupdate

于 2012-12-03T04:18:57.430 回答
0

这个问题解决方法:

  1. 从理论核心中的实体管理器获取 unitOfWork
  2. 通过主键获取对象哈希
  3. 删除此实体散列

代码:

/**
 * @{inerhitDoc}
 */
public function clearAppHashInUnitOfWork($appleId)
{
 // Get unit of work (Doctrine::EntityManager)
 $uow = $this->container
     ->get('doctrine')
     ->getEntityManager()
     ->getUnitOfWork();

 // Get app hash by ID
 $appHash = $uow
     ->tryGetByIdHash(
       $appleId,
       $this->container->getParameter('app.app_class')
     );

 // Hash already exists
 if ($appHash) {
   $uow
       ->removeFromIdentityMap($appHash);
 }
}
于 2012-12-02T09:28:22.210 回答