Peticiones Ajax con Symfony 3
Peticiones Ajax con Symfony 3



Doctrine y Symfony 3 van de la mano y son una herramienta excepcional para cualquier desarrollador, sobre todo para aquel que quiera esquivar los complejos caminos del lenguaje de base de datos con el que tenga que trabajar, sql, mysql, oracle etcétera.

Doctrine es un potente ORM (Object Relational Mapper) que nos permite mapear y trabajar con nuestras bases de datos como si objetos php fueran, así de sencillo.

En este tutorial vamos a ver lo sencillo que es configurar Doctrine en Symfony, crearemos nuestra base de datos, una entidad, un repositorio y veremos como realizar las tareas más comunes a la hora de trabajar con Doctrine, crear, actualizar, listar y eliminar.

Antes de seguir puede que te interese revisar alguno de los siguientes tutoriales del blog.

Configurar Doctrine y Symfony 3

Lo primero que debemos hacer es abrir el archivo de configuración app/config/parameters.yml y establecer nuestros datos de conexión, incluido el nombre de la base de datos que vamos a querer crear, una vez hecho ejecuta el siguiente comando desde la terminal.


El comando anterior habrá creado la base de datos, aunque realmente los datos de configuración utilizados son los que están en app/config/config.yml, aquí son referenciados entre otros los datos de la conexión con la base de datos.

Crear una entidad con Symfony

Las entidades vienen a ser los modelos de Doctrine y dentro de éstos normalmente tenemos las propiedades de la clase (campos de la tabla), el método constructor, eventos y las relaciones que necesitemos.

Una entidad puede o no tener un repositorio vinculado, un repositorio no es más que una archivo donde extendemos las consultas que Doctrine ofrece de forma base a nuestra entidad, nada más.

Para crear nuestra entidad Post y su repositorio desde la línea de comandos para el bundle AppBundle simplemente ejecuta el siguiente comando.


Si revisas el contenido del directorio src/AppBundle verás que dos nuevos directorios han sido creados, Entity y Repository, si abres el archivo src/AppBundle/Entity/Post.php verás lo siguiente.


Todo este código ha sido generado de forma automática con el anterior comando, una entidad completa con las propiedades id, title y body y todos sus setters y getters.

Si tienes dudas con el código anterior te recomiendo echar un vistazo a los tutoriales sobre Doctrine.

Algo muy importante en este archivo es ver de que forma a través de las anotaciones se establece el nombre de la tabla y el repositorio vinculado a esta entidad.

Crear la tabla post desde la línea de comandos

Para crear la tabla post a través de la entidad Post simplemente ejecuta el siguiente comando.


Si ahora revisas tu base de datos verás que la tabla posts ha sido creada tal cual la hemos definido en nuestra entidad.

Para insertar un nuevo registro en la tabla post primero añade las siguientes clausulas use al inicio del controlador DefaultController.


Ahora sí, añade el siguiente método para insertar un nuevo registro.


Actualizar un post actual también es muy sencillo, simplemente añade el siguiente método.


Obtener un único post también es muy sencillo con Doctrine gracias al método find, simplemente añade el siguiente método.


Listar todos los posts es más de lo mismo, simplemente podemos utilizar el método findAll.


Finalmente sólo nos queda ver como podemos eliminar un post con Doctrine y Symfony, simplemente añade el siguiente método.


Llegados a este punto ya hemos realizado todas las operaciones típicas contra la tabla post, ahora vamos a abrir el repositorio src/AppBundle/Repository/PostRepository.php y añadimos el siguiente método el cual hace uso de DQL (Doctrine Query Language).


Simplemente obtenemos un post por su título accediendo a la entidad Post, esto es DQL, en lugar de acceder a los campos de la tabla, accedemos a las propiedades de la entidad y hacemos las consultas sobre estas, aunque este es probablemente el ejemplo más básico.

Para utilizar el nuevo método del repositorio Post simplemente añade el siguiente método al controlador DefaultController.


Y ahora sí, eso es todo, espero que te haya parecido interesante el trabajo con Doctrine y Symfony 3.