2014-11-23 2 views
1

Функция postUpdate запускается только в том случае, если изменение осуществляется по форме отправки, когда изменение происходит из-за функции обновления, поскольку следующее не запускается. моя функция после обновления:Symfony2 Lifecycle Events не запускает функцию update()

public function postUpdate(LifecycleEventArgs $args) { 
    error_log('in post update'); 
} 

декларация жизни событие:

custom.doctrine.listeer: 
     class: Custom\CoreBundle\Listeners\CustomDoctrineListener 
     tags: 
      - { name: doctrine.event_listener, event: postUpdate, method: postUpdate } 
      - { name: doctrine.event_listener, event: prePersist, method: prePersist } 

вызов, который не вызывает событие жизни:

public function setPrivate($id,$private){ 
    $qb=$this->createQueryBuilder('cc') 
    ->update() 
    ->set('cc.private',$private) 
    ->where('cc.id='.$id); 
    return $qb->getQuery()->getResult(); 
} 

ответ

0

Используйте диспетчер сущностей для запуска событие жизненного цикла, а не самостоятельно писать запрос на обновление.

// get the entity manager as $em ($em = ...) 
$cc = $em->getRepository('your:repository')->find($id); 
$cc->setPrivate($private); 

$em->flush(); 

Заканчивать Doctrine Lifecycle Events

Смежные вопросы