2012-10-05 25 views
-2

你好,我脑水肿的问题这段代码:监听周期回调

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} 

但没有创建日志数据库。帮助我please.thanks

回答

3

在这种情况下$ entityManager-> 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

+0

那么,如何是否被允许同花顺更新前更改保存到数据库?我需要在PostUpdate中保存getOldValue($ fieldName)。谢谢。 – paradita