Actualizar registros de la base de datos en Symfony2

Veamos como actualizar registros de la base de datos en Symfony2.

Crearemos una ruta para ello.

actualizar:
  path:     /actualizar/{id}/{title}/{description}/{content}
  defaults: { _controller: PruebasEjemploBundle:Default:actualizar }

Creamos también una acción.

public function actualizarAction($id, $title, $description, $content) {


        //Entity Manager
        $em = $this->getDoctrine()->getEntityManager();
        $posts = $em->getRepository("PruebasEjemploBundle:Posts");


        $post = $posts->find($id);
        $post->setTitle($title);
        $post->setDescription($description);
        $post->setContent($content);

        //Persistimos en el objeto
        $em->persist($post);

        //Insertarmos en la base de datos
        $flush = $em->flush();

        if ($flush == null) {
            echo "Post actualizado correctamente";
        } else {
            echo "El post no se ha actualizado";
        }

     
        die();
    }

El procedimiento es sencillo llamamos al entity manager, después llamamos al repositorio de la entidad, hacemos un find para conseguir el objeto que vamos a modificar, seteamos sus propiedades y lo guardamos en base de datos.

Si entramos a una url como esta

http://localhost/symfony2/web/app_dev.php/actualizar/1/titulo2/descripcion2/contenido2

Hace el update.

Más información:
Databases and Doctrine

Victor

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post

2 Comentarios

  1. hola
    primero q nada muy buena pagina con tutoriales para aprender un poco mas de symfony 2

    un pregunta, al actualizar los registros lei en otra pagina q tiene casi el mismo contenido de la documentacion oficial q para actualizar ya no se usaba el metodo $em->persist sino solamente el flush como se muestra en este link
    http://librosweb.es/symfony_2_x/capitulo_8/un_ejemplo_sencillo.html
    en todo caso no habria q modificar los ejemplos q tienes en tu pagina? o es q hay un error en esa otra pagina?

    saludos

    Responder
    • Hacemos un find del objeto que queremos actualizar, luego un flush y luego un persist, así es como lo tengo yo entendido. Como lo hago yo te funcionará. Un saludo.

      Responder

Poner un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *