2014-11-23 97 views
1

我的postUpdate函數僅在更改是通過表單提交時觸發,當更改由更新函數發出時,它將觸發下列操作。 我的帖子更新功能:Symfony2生命週期事件不會觸發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

相關問題