如何从symfony2中删除一个实体
我的第一个symfony2项目是一个存储在数据库中的访客列表(被邀请参加一个活动)。 我有
- 创build实体类来宾与他们的所有variables(ID,姓名,地址,电话号码等)
- 在mysql数据库中创build了模式
- 创build了一个“添加客人”到树枝模板的路线
- 创build了一个formType
最后在Controller中创build一个“createGuest”方法,一切正常。
我无法设法从数据库中删除一个客人。 我已经阅读了networking上的每一个教程,包括官方的Symfony2书籍; 所有它说的是:
删除一个对象
删除对象非常相似,但需要调用实体pipe理器的remove()方法:
$em->remove($product); $em->flush();
它甚至没有提到如何连接控制器deleteAction($ id)和树枝模板(甚至“Update a object”部分丢失了文档)。 我想要做的是使用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')); }
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')); }
要在您的控制器中发送ID,请使用{{ path('your_route', {'id': guest.id}) }}
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(); } }
从我所了解的情况来看,你在为模板添加什么而挣扎。
我将举一个例子:
<ul> {% for guest in guests %} <li>{{ guest.name }} <a href="{{ path('your_delete_route_name',{'id': guest.id}) }}">[[DELETE]]</a></li> {% endfor %} </ul>
现在会发生什么呢,它会迭代guest虚拟机中的每个对象(如果对象集合是以其他方式命名的,则必须重命名该对象),显示名称并放置正确的链接。 路由名称可能不同。