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();
}
}
update メソッドで item Manager を使用することを考えましたが、それが最善の方法かどうかわかりません。
前もって感謝します。