問題在于resetManager()
,并不是所有直接引用實體管理器的服務都會自動更新為新的實例。
在updateStatus()
方法中,您可以輕松地檢查實體是否由實體管理器管理。
$uow = $this->getEntityManager()->getUnitOfWork(); if($uow->getEntityState($delayReport) !== UnitOfWork::STATE_MANAGED) { // not managed }
不知道重新分配是否有助于此處,例如$this->getEntityManager()->merge($delayReport)
。
但是最好避免關閉管理器并在驗證數(shù)據(jù)之前對其進行驗證。
編輯:
未經(jīng)測試,如果您將通過Registry獲取重置的EntityManager。但是這值得一試。
$entityManager = $managerRegistry->getManagerForClass(get_class($delayReport));