如何使用Doctrine 2重置实体

时间:2012-12-02 08:34:44

标签: symfony doctrine

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

现在我有一个代码:

// 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

P.S。

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

2 个答案:

答案 0 :(得分:0)

此问题解决方案:

  1. 从doctrine core中的实体经理获取unitOfWork
  2. 通过主键获取对象哈希
  3. 删除此实体哈希
  4. 代码:

    /**
     * @{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);
     }
    }
    

答案 1 :(得分:0)