tutorial symfony2 query generate español consultas symfony doctrine

query - Cómo elimino una entidad de symfony2



generate entities symfony 4 (3)

Mi primer proyecto symfony2 es una lista de invitados (invitados en un evento) almacenados en una base de datos. yo tengo

  • creó la clase de entidad Invitado con todas las variables para ellos (identificación, nombre, dirección, número de teléfono, etc.)
  • creado el esquema en el mysql db
  • creó una ruta para "agregar un invitado" a una plantilla de ramita
  • creó un formType

y finalmente un método "createGuest" en el Controlador y todo funciona bien.

No puedo eliminar a un invitado de la base de datos. He leído todos los tutoriales en la web, incluido el libro oficial Symfony2; todo lo que dice es:

Eliminar un objeto

La eliminación de un objeto es muy similar, pero requiere una llamada al método remove () del administrador de entidades:

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

No dice nada más que eso (incluso la sección "Actualizar un objeto" le falta documentación) sobre cómo conectar el controlador deleteAction ($ id) con la plantilla twig. Lo que quiero hacer es hacer una lista de todos los invitados con una acción viewGuests y una plantilla viewGuests twig, con un ícono para eliminar al lado de cada fila, en el que debe hacer clic para eliminar una entrada. Simple, pero no puedo encontrar ninguna documentación y no sé por dónde empezar.

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'')); }


ELIMINAR DE ... DONDE 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(); } }


Por lo que entiendo, luchas con qué poner en tu plantilla.

Mostraré un ejemplo:

<ul> {% for guest in guests %} <li>{{ guest.name }} <a href="{{ path(''your_delete_route_name'',{''id'': guest.id}) }}">[[DELETE]]</a></li> {% endfor %} </ul>

Ahora lo que sucede es que itera sobre cada objeto dentro de los invitados (¡tendrá que cambiar el nombre si su colección de objetos se llama de otra manera!), Muestra el nombre y coloca el enlace correcto. El nombre de la ruta puede ser diferente.


Symfony es inteligente y sabe cómo hacer el find() solo:

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'')); }

Para enviar la identificación en su controlador, use {{ path(''your_route'', {''id'': guest.id}) }}