更新MySQL数据库Symfony2

更新MySQL数据库Symfony2,mysql,symfony,Mysql,Symfony,我有一个MySQL数据库和前端DataTables视图,并使用Symfony 我的桌子上有两个按钮。删除和编辑。 如果我单击delete,它将从DataTables和MySqL中删除该行。适用于此代码: /** * @Route("/delete/{id}", name="deletepage") * @Template() */ public function delete($id) { $em = $this->getDoctrine()-&g

我有一个MySQL数据库和前端DataTables视图,并使用Symfony

我的桌子上有两个按钮。删除和编辑。 如果我单击delete,它将从DataTables和MySqL中删除该行。适用于此代码:

  /**
   * @Route("/delete/{id}", name="deletepage")
   * @Template()
   */
  public function delete($id)
  {
      $em = $this->getDoctrine()->getManager();
      $events = $em -> getRepository('AppBundle:eqAli')->find($id);
      $em -> remove($events);
      $em -> flush();

      return $this->redirectToroute('homepage');
  }
/**
 * @Route("/edit/update/{id}", name="updatepage")
 * @Template()
 */
public function update($id)
{
    $em = $this->getDoctrine()->getManager();
    $events = $em -> getRepository('AppBundle:eqAli')->find($id);
    $em -> persist($events);
    $em -> flush();

    return $this->redirectToroute('homepage');
}
我有一个编辑按钮,它重定向到一个编辑页面,其中来自该行的数据是自动填充的。 我试图实现的是,一旦用户在该页面上进行了更改,并且用户单击save,新信息将更新到MySQL中。所以没有删除,只有更新

我试图通过以下代码实现这一点:

  /**
   * @Route("/delete/{id}", name="deletepage")
   * @Template()
   */
  public function delete($id)
  {
      $em = $this->getDoctrine()->getManager();
      $events = $em -> getRepository('AppBundle:eqAli')->find($id);
      $em -> remove($events);
      $em -> flush();

      return $this->redirectToroute('homepage');
  }
/**
 * @Route("/edit/update/{id}", name="updatepage")
 * @Template()
 */
public function update($id)
{
    $em = $this->getDoctrine()->getManager();
    $events = $em -> getRepository('AppBundle:eqAli')->find($id);
    $em -> persist($events);
    $em -> flush();

    return $this->redirectToroute('homepage');
}
但那没用。它确实得到了正确的ID,我可以点击,只是没有更新到MySQL。路径etc是正确的,因为当我将persist更改为delete时,按钮会起作用


有人需要解决方案吗?

基本上,您需要获取单个
eqAli
实体,命令实体管理器对其进行管理,并将对实体的所有更改刷新到数据库中

问题是您在保存之前没有对实体进行实际更改。

Ehhh

所有这些都应该是editAction(不需要重定向到更新路由),在下面的示例中,尝试在您的案例中实现它(它稍微高级一点,但您应该了解这个想法)

```


您需要对找到的
$events
实体执行一些操作,如下所示:

$events = $em -> getRepository('AppBundle:eqAli')->find($id);
...
$events->modifyDate( new DateTime() );
...
$em -> persist($events);
$em -> flush();

例如,
modifyDate
是属于
eqAli
实体的方法。我在前后显示
,表明您可能需要对实体进行其他更改。在原始代码中,您根本没有更改任何内容。这就是为什么您看不到数据库中有任何差异。

我理解您的意思。但是我如何解决这个问题呢?您应该对实体进行更改。现在您只需获取一个
$events=$em->getRepository('AppBundle:eqAli')->find($id)
并立即将其持久化
$em->persist($events)$em->flush()因此数据库中没有更新是合乎逻辑的。您想对实体做什么?我想实现的是保存后也会对MySQL进行更改。@例如,您不能执行类似于
$events->updateWithSomeData($data)的操作冲洗前。您可以从请求正文或数据库中获取此
$data
。但是,在哪里声明函数updateWithSomeData?在这个功能中需要做什么?谢谢!您在@param中的请求和回复是什么?实体?Reklamy是我的实体,请求是标准sf类Symfony\Component\HttpFoundation\request;