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があります

PS

-> findByAppleId-リポジトリを取得し、関数「find」を使用します(Apple IDが主キーです)

4

2 に答える 2

0

この問題の解決策:

  1. Doctrineコアのエンティティマネージャーから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 に答える
0

変更されたフィールドを取得する必要がある場合は、次を使用できます。

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

于 2012-12-03T04:18:57.430 に答える