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

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post

3 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
  2. Hola Víctor!

    Primero que nada agradecer tus aportes que siempre son excelentes, mi consulta: ¿Y en el caso de que lo que quieras sea actualizar el registro mediante un Form?, ejemplo, tienes el Listado de registros, creas un Link con el que pases las variables para que se genere el form hacia la ruta correspondiente (http://localhost:8000/update/1) con esto lo que quieres es que se cargue un formulario con los datos del registro con ID 1 y que todos los INPUTs carguen la data correspondiente para luego hacer los cambios en los respectivos INPUT´s y hacer un click en el Submit para que haga el update en la DB!

    Como se haría en este caso?

    Gracias por anticipado!

    Responder

Poner un comentario

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