새로 고침이 작동하지 않음: Doctrine Manager 재설정 후 문제
P粉731861241
P粉731861241 2023-08-29 15:07:12
0
1
506
<p>데이터에 오류가 있습니다. 정수 열</code>에서 <code>범위를 벗어났습니다. 오류가 발생하여 <code>엔터티 관리자 닫기</code> , 예외</p >에서 I<code>reset Manager</code> <pre class="brush:php;toolbar:false;">공개 함수 renewDeliveryTime($delayReport) : void { 노력하다 { $this->delayReportRepository->updateRenewedDeliveryTimeAt($delayReport, 50000000); }catch(예외 $예외){ // 범위를 벗어남 오류 $this->managerRegistry->resetManager(); } } 공개 함수 updateRenewedDeliveryTimeAt($delayReport,$delayDuration) { /*** @var DelayReport $delayReport*/ $delayReport->setDelayDuration($delayDuration); $delayReport->setStatus(DelayReport::STATUS['DONE']); $this->getEntityManager()->flush(); }</pre> <p>문제는 데이터에 오류가 발생하고 정수 열</code>에서 <code>범위를 벗어났다는 오류 메시지가 표시되며 < code>닫힌 엔터티 관리자< /code>계속 작업하고 이 목적을 위해 예외 <코드>재설정 관리자</code></p> <pre class="brush:php;toolbar:false;">공개 함수 enqueue($delayReport) : 무효 { $this->pushInQueueReport($delayReport); $this->delayReportRepository->updateStatus($delayReport, DelayReport::STATUS['IN_QUEUE']); } 공개 함수 updateStatus($delayReport, $status) { /*** @var DelayReport $delayReport*/ $delayReport->setStatus($status); $this->getEntityManager()->flush(); }</pre> <p>문제는 다른 개체와 거의 동일한 데이터베이스 작업을 수행한 후에 <code>$this->getEntityManager()->flush()</code> 데이터베이스 아무 일도 일어나지 않습니다. 이는 <code>$this->managerRegistry->resetManager()</code></p>와 관련이 있습니다. <p>이 문제에 대한 해결책은 무엇입니까? </p>
P粉731861241
P粉731861241

모든 응답(1)
P粉143640496

문제는resetManager() 엔터티 관리자를 직접 참조하는 모든 서비스가 새 인스턴스로 자동 업데이트되지는 않는다는 것입니다.

updateStatus() 방법을 사용하면 해당 엔터티가 엔터티 관리자에 의해 관리되는지 쉽게 확인할 수 있습니다.

으아악

재할당이 여기에 도움이 될지 확실하지 않습니다. 예를 들어 $this->getEntityManager()->merge($delayReport).

하지만 관리자를 닫고 데이터를 검증하기 전에 데이터를 검증하는 것은 피하는 것이 좋습니다.

편집자:

테스트되지 않았습니다. 레지스트리를 통해 EntityManager를 재설정하는 경우입니다. 하지만 시도해 볼 가치가 있습니다.

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!