我在控制器中有一个带有持久性对象的循环:
$em = $this->getDoctrine()->getManager();
$courserepository = $em->getRepository(Course::class);
$courseByRepository = $courserepository->findCourseByFiveParameters($timestamp, $grille, $reunion, $courseNumber, $emailstring);
//persist all cheval
$num = (int)($request->request->get('loop'));
$chevalArray = array();
for($i=1; $i<=$num; $i++){
$cheval = new Cheval;
$cheval->setTimestamp($timestamp);
$cheval->setEmail($email);
$cheval->setGrille($grille);
$cheval->setReunion($reunion);
$cheval->setCourseNumber($courseNumber);
$cheval->setNumero(htmlspecialchars($request->request->get('numero'.$i)));
$cheval->setNom(htmlspecialchars($request->request->get('nom'.$i)));
$cheval->setAge(htmlspecialchars($request->request->get('age'.$i)));
$cheval->setSexe(htmlspecialchars($request->request->get('sexe'.$i)));
$cheval->setCorde(htmlspecialchars($request->request->get('corde'.$i)));
$cheval->setOeilleres(htmlspecialchars($request->request->get('oeilleres'.$i)));
$cheval->setFerrage(htmlspecialchars($request->request->get('ferrage'.$i)));
$cheval->setNbreCourses(htmlspecialchars($request->request->get('nbreCourses'.$i)));
$cheval->setVictoires(htmlspecialchars($request->request->get('victoires'.$i)));
$cheval->setPlaces(htmlspecialchars($request->request->get('places'.$i)));
$cheval->setGains(htmlspecialchars($request->request->get('gains'.$i)));
$cheval->setHandPoids(htmlspecialchars($request->request->get('handPoids'.$i)));
$cheval->setEntraineur(htmlspecialchars($request->request->get('entraineur'.$i)));
$cheval->setJockey(htmlspecialchars($request->request->get('jockey'.$i)));
$cheval->setDistance(htmlspecialchars($request->request->get('distance'.$i)));
$cheval->setMusique(htmlspecialchars($request->request->get('musique'.$i)));
//ManyToOne
$course->getId($courseByRepository->getId());
$cheval->setCourse($course);
//add to array
$chevalArray[] = $cheval;
//persist array[key]
$manager->persist($chevalArray[$i-1]);
}
$manager->flush();
但主键重复:
An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42' for key 'cheval.PRIMARY'
我试图坚持只是:
$cheval = new Cheval;
$cheval->setTimestamp($timestamp);
$cheval->setEmail($email);
...
$manager->persist($cheval);
$manager->flush;
AND在循环外清除:
}
$manager->flush;
为什么在我为循环的每一圈重新示例化对象时,键都保留在内存中?!
1条答案
按热度按时间2uluyalo1#
好的,我找到了回应,我有一个一对多的taf为我的实体,诺克斯我刚刚切换到ManyToOne &它很好的作品,谢谢大家...