Muat semula tidak berfungsi: Isu selepas menetapkan semula Pengurus Doktrin
P粉731861241
P粉731861241 2023-08-29 15:07:12
0
1
487

Saya mempunyai ralat dengan data saya, saya mendapat ralat di luar julat pada lajur integer dan saya cuba menghalang Tutup Pengurus Entiti , sebagai sayaset semula pengurus

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(); }

Masalahnya ialah, saya mendapat ralat dalam data saya, saya mendapat mesej ralat di luar julat pada lajur integer, dan saya cuba menghalang < kod>pengurus entiti tertutup< /code>Teruskan bekerja dan untuk tujuan ini dalam pengecualian pengurus semula

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(); }

Masalahnya ialah selepas saya mempunyai objek lain dan operasi pangkalan data yang hampir sama, nampaknya $this->getEntityManager()->flush() pangkalan data Tiada apa-apa yang berlaku. Ini ada kaitan dengan $this->managerRegistry->resetManager()

Apakah penyelesaian kepada masalah ini?

P粉731861241
P粉731861241

membalas semua (1)
P粉143640496

Masalahnya ialahresetManager()bahawa tidak semua perkhidmatan yang merujuk terus kepada pengurus entiti dikemas kini secara automatik kepada kejadian baharu.

Dalam kaedahupdateStatus()anda boleh menyemak dengan mudah sama ada entiti diuruskan oleh pengurus entiti.

$uow = $this->getEntityManager()->getUnitOfWork(); if($uow->getEntityState($delayReport) !== UnitOfWork::STATE_MANAGED) { // not managed }

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.

$entityManager = $managerRegistry->getManagerForClass(get_class($delayReport));
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!