Sacar de la base de datos en Symfony2

Vamos a ver como conseguir los datos que hay guardados en una tabla, esto sería lo equivalente a la sentencia SELECT pero con Doctrine. Con los métodos find de Doctrine podremos sacar de la base de datos en Symfony2. Crearemos una ruta para listar los datos.

listar:
  path:     /listar
  defaults: { _controller: PruebasEjemploBundle:Default:listar }

Y creamos un método en el controlador.

public function listarAction() {
        //Entity Manager
        $em = $this->getDoctrine()->getEntityManager();

        /*
         * Repositorio de la entidad 
         * (si no creamos uno y le metemos métodos propios 
         * solamente tendrá los métodos de la clase de la entidad)
         */
        $posts = $em->getRepository("PruebasEjemploBundle:Posts");

        // Consegir todo
        $po = $posts->findAll();
        foreach ($po as $p) {
            echo $p->getTitle();
            echo "<br/>";
            echo $p->getDescription();
            echo "<hr/>";
        }

        die();
    }

El proceso es simple llamamos al entity manager, conseguimos el repositorio de la entidad, lanzamos un método find y recorremos el array de objetos.

Tipos de find en Doctrine

Tenemos varios tipos de find en Doctrine. Son los siguientes

Con findBy podemos hacer where en la consulta pasandole las condiciones en un array.

$posts = $posts->findBy(
    array(‘title’ => 'foo')
);

Con find consula la clave primaria de la tabla que normalmente será el id

 $post = $posts->find($id); 

Con findByX podemos buscar por X propiedad.
[/php]$post= $posts->findById($id);[/php]

Con findOneByX podemos sacar una columna con una condición

$post=$posts->findOneById($id);

Para hacer consultas también podemos usar DQL o el Query Builder de Doctrine pero eso lo veremos en posts posteriores.

Más información:
Databases and Doctrine

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post

1 Comentario

  1. Hola, como puedo insertar datos de dos tablas relacionas, tengo problema al insertar dato en la clave foranea

    Responder

Poner un comentario

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