我正试图坚持使用onFlush事件监听器,但出现此错误:
在执行“ INSERT INTO日志(dateSauvegarde,montantProvision,montantPrecedant,commentaire,dateCreation,dateModification,idProfil,idSinistre)值(?,?,?,?,?,?,?,?)”时发生异常: / p>
SQLSTATE [HY093]:参数编号无效:未绑定任何参数
但是..这些字段填充得很好...
public function onFlush(OnFlushEventArgs $args){
$em = $args->getEntityManager();
$uow = $em->getUnitOfWork();
$session = new Session();
$loggedContact = $session->get('loggedContact');
foreach ($uow->getScheduledEntityUpdates() as $entity) {
if ($entity instanceof ApcSinistres) {
$changements = $uow->getEntityChangeSet($entity);
foreach($changements as $colonne => $changement){
if($colonne == "provisions"){
$logs = new ApcSauvegardeProvisionsHistorisation();
$logs->setDatesauvegarde(new DateTime());
$logs->setIdprofil($loggedContact);
$logs->setIdsinistre($entity);
$logs->setCommentaire("Recalcul des provisions suite au changement du statut du sinistre");
$logs->setMontantprovision($changement[1]);
$logs->setMontantprecedent($changement[0]);
$uow->persist($logs );
}
}
return;
}
}
}
我不知道为什么会有这个错误,有人可以解决吗?
致谢
答案 0 :(得分:0)
如果要在ApcSauvegardeProvisionsHistorisation
中保留某些内容,则需要手动更新onFlush
对象的变更集。原因是更改集在调用onFlush
之前已经计算过。
$logMetadata = $em->getClassMetadata(ApcSauvegardeProvisionsHistorisation::class);
// ...
$em->persist($logs);
$uow->computeChangeSet($logMetadata, $logs);