2012-12-02 69 views
0

我想從數據庫中獲取舊實體以更改保存歷史記錄。如何獲得使用Doctrine 2重置實體

現在我有一個代碼:

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

但應用程序和舊的應用程序有1.1版。在數據庫應用程序有版本1

P.S.

- > findByAppleId - 讓存儲庫並使用功能 「找到」(蘋果ID是主鍵)

回答

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); 
} 
} 
相關問題