Saya mempunyai ralat dengan data saya, saya mendapat ralat Masalahnya ialah, saya mendapat ralat dalam data saya, saya mendapat mesej ralat Masalahnya ialah selepas saya mempunyai objek lain dan operasi pangkalan data yang hampir sama, nampaknya Apakah penyelesaian kepada masalah ini? public function renewDeliveryTime($delayReport) : batal { cuba { $this->delayReportRepository->updateRenewedDeliveryTimeAt($delayReport, 50000000); }tangkap (Exception $exception){ //ralat di luar julat $this->managerRegistry->resetManager(); } } kemas kini fungsi awamRenewedDeliveryTimeAt($delayReport,$delayDuration) { /*** @var DelayReport $delayReport*/ $delayReport->setDelayDuration($delayDuration); $delayReport->setStatus(DelayReport::STATUS['DONE']); $this->getEntityManager()->flush(); }
public function enqueue($delayReport) : batal { $this->pushInQueueReport($delayReport); $this->delayReportRepository->updateStatus($delayReport, DelayReport::STATUS['IN_QUEUE']); } status kemas kini fungsi awam($delayReport, $status) { /*** @var DelayReport $delayReport*/ $delayReport->setStatus($status); $this->getEntityManager()->flush(); }
$this->getEntityManager()->flush()
pangkalan data Tiada apa-apa yang berlaku. Ini ada kaitan dengan $this->managerRegistry->resetManager()
Masalahnya ialah
resetManager()
bahawa tidak semua perkhidmatan yang merujuk terus kepada pengurus entiti dikemas kini secara automatik kepada kejadian baharu.Dalam kaedah
updateStatus()
anda boleh menyemak dengan mudah sama ada entiti diuruskan oleh pengurus entiti.Tidak pasti sama ada penugasan semula akan membantu di sini, seperti
$this->getEntityManager()->merge($delayReport)
.Tetapi adalah lebih baik untuk mengelak daripada menutup pengurus dan mengesahkan data sebelum mengesahkannya.
Editor:
Belum diuji, jika anda akan mendapat penetapan semula EntityManager melalui Pendaftaran. Tetapi ia berbaloi untuk dicuba.