Tengo un código de identificación

if ($this->request->isMethod('POST') && $valid) {
            $em = $this->getDoctrine()->getManager();
            $formData = $form->getData();
            $staffValue = $formData['staff'];
            $campaignDetailFilter = $modelCampaignDetail->getRepository()->countDataByCampaignDetailId($formData['campaignDetail']);
            $total         = count($campaignDetailFilter);
            $totalStaff = count($formData['staff']);

            foreach ($campaignDetailFilter as $valDetailId) {
                $detailDataEntity = $modelDetailData->getEntity($valDetailId['id']);
                $batchSize = $total / $totalStaff;
                $i = 0;
                foreach ($staffValue as $staffVal) {
                    $detailDataEntity->setStaff($staffVal);
                    $em->persist($detailDataEntity);
                    if (($i % $batchSize) === 0) {
                        $em->flush();
                        $em->clear();
                    }
                    ++$i;
                }
                $em->flush();
                $em->clear();
            }
        }

Pero cuando doy $ i = 0, aparece un error: Se encontró una nueva entidad a través de la relación ... que no estaba configurada para operaciones persistentes en cascada para la entidad .

-1
n2k 20 ene. 2021 a las 05:36

1 respuesta

La mejor respuesta

Debe eliminar $ em-> clear ().

if (($i % $batchSize) === 0) {
     $em->flush();
}
0
poppies 20 ene. 2021 a las 05:04