首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony : flush()时出错

Symfony : flush()时出错
EN

Stack Overflow用户
提问于 2017-09-14 16:20:53
回答 3查看 474关注 0票数 0

我是Symfony的初学者,所以我遵循了Symfony 3的教程。

代码语言:javascript
复制
"This page isn't working
localhost didn't send any data
ERR_EMPTY_RESPONSE"

当我注释此行时,页面可以正常工作...代码如下:

代码语言:javascript
复制
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
    ));
}

有什么想法吗?感谢您的帮助!

EN

回答 3

Stack Overflow用户

发布于 2017-09-14 16:23:43

在刷新之前必须调用$em->persist($yourEntityToPersist);

票数 1
EN

Stack Overflow用户

发布于 2017-09-14 16:24:50

您正在调用flush函数btu,您没有将任何内容持久化到数据库中。

代码语言:javascript
复制
$em->persist($entity);

因为当调用flush()方法时,Doctrine会查看它正在管理的所有对象,以确定它们是否需要持久化到数据库。

因此,您在没有调用flush的情况下调用它,并且代码被破坏了。

你打电话给

代码语言:javascript
复制
$advert->addCategory($category);

但此调用仅将类别添加到广告中,如果您需要像这样持久化后将此数据放入数据库中,然后刷新

代码语言:javascript
复制
$em->persist($advert);
$em->flush();

在这种情况下,您将把广告类别保存到数据库中,而不仅仅是保存在内存中

票数 1
EN

Stack Overflow用户

发布于 2017-09-15 16:54:28

当使用Doctrine时,持久化实体不是无用的吗?

代码语言:javascript
复制
$em = $this->getDoctrine()->getManager();

$advert = $em->getRepository('OCPlatformBundle:Advert')->find($id);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46213990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档