监听器循环回调

时间:2012-10-05 13:18:05

标签: php symfony doctrine

你好,我有这个代码的问题:

ListenerCrud.php

<?php

namespace mio\mioBundle;

use Doctrine\ORM\Event\PreUpdateEventArgs;
use Doctrine\ORM\EntityManager;
use mio\mioBundle\Entity\Log;
use Symfony\Component\HttpFoundation\Response;

class ListenerCrud{

    public function preUpdate(PreUpdateEventArgs $eventArgs){

        if ($eventArgs->getEntity() instanceof Usuario){
        $entity = $eventArgs->getEntity();
        $entityManager = $eventArgs->getEntityManager();
        $log = new Log();
        $entityManager->persist($log);
        $entityManager->flush();
        }
    }
}
?>

config.yml:

listenercrud:
    class: mio\mioBundle\ListenerCrud
    tags:
        - { name: doctrine.event_listener, event: preUpdate}

但没有在数据库中创建日志。请帮助我。谢谢

1 个答案:

答案 0 :(得分:3)

在这种情况下,$ entityManager-&gt; persist()不起作用,因为他无法在preUpdate事件中调用。 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#preupdate

也许您可以使用postUpdate事件 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#postupdate-postremove-postpersist