2

我需要保留一个名为Item的实体的先前版本。当我更新它时,我会创建一个具有相同 id 但具有新版本号的新实体。我尝试使用侦听器,但这样我无法在preUpdate方法(无限循环)中保留新项目。

public function preUpdate(LifecycleEventArgs $args)
{
    $em = $args->getEntityManager();
    $entity = $args->getEntity();

    if ($entity instanceof Item) {

        // Create a new version of the current item
        $item = new Item();
        $item->setId(($entity->getId());
        $item->setVersion($entity->getVersion() + 1);
        $item->setSubject($entity->getSubject());
        $item->setDetail($entity->getDetail());
        $item->setPriority($entity->getPriority());
        $item->setStatus($entity->getStatus());
        $item->setPlannedAt($entity->getPlannedAt());
        $item->setDueAt($entity->getDueAt());
        $item->setValidationToken($entity->getValidationToken());
        $item->setType($entity->getType());

        $em->persist($item);
        $em->flush();
    }
}

我想使用带有更新方法的项目管理器,但我不知道这是否是最好的方法。

提前致谢。

4

1 回答 1

2

最后,我使用了StofDoctrineExtensionsBundle提供的DoctrineExtensions的可记录扩展

感谢库巴李戴维斯的帮助!

于 2012-05-18T08:06:18.043 回答