相关疑难解决方法(0)

Doctrine 2.1在preUpdate lifeCycleCallback中持久化实体

我正在努力解决以下问题,在实体类中我有一个preUpdate lifeCycleCallback,它必须在刷新auditTrail的更改之前保留一个新实体.

在preRemove和prePersist中,这可以很好地工作,但在preUpdate中没有任何事情发生.如果我自己调用flush,它会进入递归循环.

根据教学用户的谷歌组织将其放入onFlush应该是一个选项,但在那种情况下我无法访问实体的旧值以将此旧值保存在audittrail的新其他实体中.

我想要存档的一些小例子:

<?php
/**
 * @Entity
 * @HasLifeCycleCallbacks
 */
class someEntity {
    ... annotations ...


    /**
     * @PreUpdate
     */
    public function addAuditTrail() {
        $em = \Zend_Registry::get('doctrine')->getEntityManager();

        $entity = new AuditTrail();
        $entity->action = 'update';
        $entity->someField = $this->someField;

        $em->persist($entity); //this just doesn't do anything :-(
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

这不是真正的代码,只是为了说明你想要的东西.我也尝试过这样的事情:

$em->getUnitOfWork()->computeChangeSet($em->getClassMetaData(get_class($entity)), $entity);
Run Code Online (Sandbox Code Playgroud)

哪个应该根据此主题工作:http://groups.google.com/group/doctrine-user/browse_thread/thread/bd9195f04857dcd4

如果我再次调用flush,但由于某些无限循环而导致Apache崩溃.

谁有想法给我?谢谢!

orm doctrine-orm

8
推荐指数
1
解决办法
5729
查看次数

标签 统计

doctrine-orm ×1

orm ×1