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();
    }
}

update メソッドで item Manager を使用することを考えましたが、それが最善の方法かどうかわかりません。

前もって感謝します。

4

1 に答える 1

2

最後に、StofDoctrineExtensionsBundle によって提供される DoctrineExtensions のログ可能な拡張機能を使用ます

kubaLee Davisの協力に感謝します。

于 2012-05-18T08:06:18.043 に答える