1

我的 postUpdate 函数仅在通过表单提交进行更改时触发,当更改来自以下更新函数时,它不会触发。我的帖子更新功能:

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();
}
4

1 回答 1

0

使用实体管理器来触发生命周期事件,而不是自己编写更新查询。

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

$em->flush();

查看Doctrine 生命周期事件

于 2014-12-10T16:52:00.203 回答