繁体   English   中英

更新MySQL数据库Symfony2

[英]Update MySQL database Symfony2

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

我的桌子上有两个按钮。 删除并编辑。 如果我单击删除,它将从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');
  }

我有一个编辑按钮,该按钮重定向到一个编辑页面,该行中的数据将自动填充。 我要实现的目标是,一旦该页面上的用户进行了更改,并且用户单击“保存”,新信息将被更新到MySQL中。 因此,没有删除,但有更新。

我正在尝试通过以下代码实现这一目标:

/**
 * @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。 路径等是正确的,因为当我将更改持久化为删除时,该按钮有效。

有人解决吗?

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

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

恩...

所有这些都应该在editAction中(没有必要重定向到更新路由),在下面的示例中,尝试在您的案例中实现它(稍微先进一点,但您应该了解一下主意)。

```

 /**
 * @ParamConverter(name="reklama", class="SomeBundle:Reklamy")
 * @Template()
 * @param Request $request
 * @param Reklamy $reklama
 */
public function editAction(Request $request,Reklamy $reklama){
    $em = $this->getDoctrine()->getManager();
    $form=$this->createForm(new ReklamyType(),$reklama);
    if($request->getMethod()=="POST"){
        $form->handleRequest($request);
        if($form->isValid()){
            $em->flush();
            return $this->redirectToRoute('someroute')
        }
    }
    return array('form'=>$form->createView());
}

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

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

例如, modifyDateeqAli实体的一部分的方法。 我在前后显示...来表示您可能需要对实体进行其他更改。 在原始代码中,您根本没有任何更改。 这就是为什么您在数据库中看不到任何差异的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM