簡體   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