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