我是Symfony的初学者所以我按照教程回合Symfony 3.当我尝试冲洗()时出现错误
"This page isn't working
localhost didn't send any data
ERR_EMPTY_RESPONSE"
当我评论此行时,页面正常工作......这里是代码:
public function editAction($id, Request $request) {
$em = $this->getDoctrine()->getManager();
$advert = $em->getRepository('OCPlatformBundle:Advert')->find($id);
if (null === $advert) {
throw new NotFoundHttpException("L'annonce d'id ".$id." n'existe pas.");
}
$listCategories = $em->getRepository('OCPlatformBundle:Category')->findAll();
foreach ($listCategories as $category) {
$advert->addCategory($category);
}
$em->flush();
if ($request->isMethod('POST')) {
$request->getSession()->getFlashBag()->add('notice', 'Annonce bien modifiée.');
return $this->redirectToRoute('oc_platform_view', array('id' => 5));
}
return $this->render('OCPlatformBundle:Advert:edit.html.twig', array(
'advert' => $advert
));
}
有什么想法吗? 谢谢你的帮助!
答案 0 :(得分:1)
您需要在刷新前调用$em->persist($yourEntityToPersist);
答案 1 :(得分:1)
您正在调用flush
函数btu,您不会在数据库中保留任何内容。
$em->persist($entity);
因为当调用flush()
方法时,Doctrine会查看它正在管理的所有对象,看它们是否需要持久保存到数据库中。
所以你什么都没有打电话给flush
,代码就坏了。
你打电话
$advert->addCategory($category);
但是这个调用只会在内存中将类别添加到广告中,如果你想在你需要像这样坚持adver之后将这些数据放入你的数据库然后刷新
$em->persist($advert);
$em->flush();
在这种情况下,您不仅要在内存中将您的类别保存到数据库中
答案 2 :(得分:0)
使用Doctrine时,实体是否无效?
$em = $this->getDoctrine()->getManager();
$advert = $em->getRepository('OCPlatformBundle:Advert')->find($id);