我使用条令事件(监听器和订阅者),在这两个事件中我都有这样一个问题:当我运行postPersist时,它们不会一直运行。我的意思是,在foreach中,我称学说为移除,但事件只调用一次,而不是多次?有人能给我指路吗?
示例代码如下:
foreach ($input as $key => $value) {
$entity = $this
->findOneBy([$this->primaryKeyName => $value[$this->primaryKeyName]]);
if($i!=1)
$this->_em->getEventManager()->dispatchEvent('postUpdate',new LifecycleEventArgs($entity,$this->_em));
$i++;
$this->_em->remove($entity);
$this->_em->flush();
$result[] = $value;
}
return $result;
您需要确保您的持久性超出foreach,如下所示:
foreach ($input as $key => $value) {
$entity = $this
->findOneBy([$this->primaryKeyName => $value[$this->primaryKeyName]]);
$this->_em->remove($entity);
$result[] = $value;
}
$this->_em->flush();
$this->_em->close();
这将调用事件订阅者postRemove事件。