如何从symfony2中删除实体

Rad*_*ino 59 doctrine symfony

我的第一个symfony2项目是存储在数据库中的guest虚拟机列表(在事件中受邀).我有

  • 创建了实体类Guest,包含所有变量(id,name,address,phone number等)
  • 在mysql db中创建了模式
  • 为树枝模板创建了"添加访客"的路线
  • 创建了一个formType

最后在Controller中使用"createGuest"方法,一切正常.

我无法从数据库中删除guest虚拟机.我已经阅读了网络上的每个教程,包括官方的Symfony2书; 所有它说的是:

删除对象

删除对象非常相似,但需要调用实体管理器的remove()方法:

$em->remove($product);
$em->flush();
Run Code Online (Sandbox Code Playgroud)

关于如何将控制器deleteAction($ id)与twig模板连接起来,它没有说更多(甚至"更新对象"部分缺少文档).我想要做的是列出所有具有viewGuests操作和viewGuests树枝模板的客人,每行旁边都有一个删除图标,您应该单击该图标以删除条目.很简单,但我找不到任何文档,也不知道从哪里开始.

public function deleteGuestAction($id)
    {
        $em = $this->getDoctrine()->getEntityManager();
        $guest = $em->getRepository('GuestBundle:Guest')->find($id);

        if (!$guest) {
            throw $this->createNotFoundException('No guest found for id '.$id);
        }

        $em->remove($guest);
        $em->flush();

        return $this->redirect($this->generateUrl('GuestBundle:Page:viewGuests.html.twig'));
    }
Run Code Online (Sandbox Code Playgroud)

Jér*_*Boé 85

Symfony非常聪明,并且知道如何自己制作find():

public function deleteGuestAction(Guest $guest)
{
    if (!$guest) {
        throw $this->createNotFoundException('No guest found');
    }

    $em = $this->getDoctrine()->getEntityManager();
    $em->remove($guest);
    $em->flush();

    return $this->redirect($this->generateUrl('GuestBundle:Page:viewGuests.html.twig'));
}
Run Code Online (Sandbox Code Playgroud)

要在控制器中发送ID,请使用 {{ path('your_route', {'id': guest.id}) }}

  • 这是有效的,因为ParamConverter正在将您的ID转换为幕后的Guest实体.没有它你仍然需要自己做find() (3认同)

web*_*sky 5

DELETE FROM ... WHERE id = ...;

protected function templateRemove($id){
            $em = $this->getDoctrine()->getManager();
            $entity = $em->getRepository('XXXBundle:Templates')->findOneBy(array('id' => $id));

            if ($entity != null){
                $em->remove($entity);
                $em->flush();
            }
        }
Run Code Online (Sandbox Code Playgroud)