我需要保留名为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();
}
}
我想使用带有更新方法的项目管理器,但我不知道这是否是最好的方法。
提前致谢。
最佳答案
最后,我使用 DoctrineExtensions 的可记录扩展名由StofDoctrineExtensionsBundle提供
关于symfony - 如何保留实体的先前版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10617580/