SlideShare una empresa de Scribd logo
TRABAJO CON BASE DE DATOS: DOCTRINE
Trabajaremos con anotaciones (podríamos optar también por ficheros yml, php o xml).
El primer paso es configurar la base de datos (recordar que durante la instalación de Symfony se
establecieron los parámetros por defecto), en la ruta:
El siguiente paso es crear una base de datos para el proyecto, se puede hacer desde phpmyadmin o
desde consola:
Symfony permite crear las clases a partir del modelo relacional (ingeniería inversa). Pero vamos a
hacerlo a la inversa, creando las clases y posteriormente el modelo relacional.
Tenemos que crear la entidad Blog.php dentro de la carpeta Entity:
Y ahora para crear el esquema en base a esa clase:
Y observamos que se ha creado la tabla:
Y si volvemos a abrir la clase Blog.php observamos que se han creado automáticamente los setters
y los getters.
El siguiente paso es generar la ruta:
Vamos a crear un nuevo controlador, de manera que trabajaremos con un controlador para cada
entidad:
El siguiente paso, una vez mas, es crear la vista, en la carpeta Resources/views/Blog (previamente
creada).
El siguiente paso es instalar el paquete de Doctrine DataFixtures, para poder finalmente persistir
datos en la base de datos, donde introduciremos las diferentes entradas de la base de datos. Para
ello:
Hay que instalar también el paquete Fixtures, introducimos estas dos líneas en composer.json:
Actualizamos:
Ahora tenemos que tener también los paquetes “fixtures”:
Lo siguientes es registrar los paquetes en el appkernel.
Introducimos estas tres líneas:
Ahora tenemos que añadir los accesorios (datos). Para ellos creamos el fichero BlogFixtures.php:
Y lo llevamos a la carpeta (creada previamente):
Hay que modificar la clase BlogFixtures.php para añadir dos nuevos “uses”, extender la clase de
AbstractFixture y modificar el parámetro recibido por la funcion load:
Si todo ha ido bien al ejecutar este comando para cargar los datos se recibirá el siguiente mensaje:
Ahora probamos a introducir en la URL del navegador:
Tras esto volvemos a cargar esa URL y veremos que entramos en un post con contenido al que aún
le falta la imagen:
Tras añadir imágenes a la carpeta /web/images, y modificar el archivo screen.css en la carpeta css
(que ya teníamos creada anteriormente), el resultado es el siguiente:
Ahora hay que modificar el archivo Blog.php, para registrar sellos temporales del momento de la
persistencia en la base de datos:
Introducimos este constructor y función para que la aplicación la ejecute antes de hacer persistentes
los datos en la base de datos (@ORMPreUpdate):
Y volvemos a cargar los datos:
A continuación tenemos que cambiar el index del Page
(Blogger/BlogBundle/Resources/views/Page/index.html.twig) para poder mostrar todas las entradas
en la página principal.
Vamos ahora al PageController (Blogger/BlogBundle/Controller/PageController.php):
Ahora vemos que en nuestra home se enumeran todas las entradas.
Ahora vamos a la entidad Blog (Blog.php), vemos que la función getBlog devuelve blog. Tenemos
que modificarlo de la siguiente manera:
Esto sirve para poder determinar o limitar el número de caracteres de cada entrada que sacamos en
el listado del home.
Tras esto volvemos a la plantilla index.html.twig, y en la llamada a la entidad Blog podemos pasarle
como parámetro la longitud de la entrada.
Ahora vamos a separar la consulta doctrine del controlador, para poder reutilizarla en cualquier
momento sin tener que acceder al controlador. Para ello trabajaremos con repositorios, un script
donde pondremos todas las consultar doctrine.
Dentro de la carpeta Entity creamos una carpeta Repository y dentro creamos BlogRepository.php
con el siguiente contenido:
Y ahora cambiamos en el PageController la consulta por una llamada al repositorio:
Ahora vamos a trabajar los comentarios. Como un comentario es de un blog pero un blog tiene
muchos comentarios esto se trabaja con anotaciones. En primer lugar creo la entidad Comment en la
carpeta Entity.
Y en la entidad Blog:
php bin/console doctrine:generate:entities Blogger
Tras esto me ha debido crear todos los métodos de acceso en la clase Comment.
Hacemos persistentes las clases en la base de datos, lo haremos con migraciones.
Y veremos que se ha generado automáticamente la tabla de comentarios en nuestra base de datos:
Lo siguiente es cargar los comentarios. Para ello tenemos que llevarnos el fichero a DataFixtures y
después hacer un load.
Añadiendo al final también:
Ahora en la clase CommentRepository.php (creada automaticamente) añadimos:
Ahora en BlogController.php cambiamos:
Ahora cambiamos la plantilla show.html.twig:
Creamos en la carpeta views otra carpeta llamada Comment, con un archivo index en su interior con
el siguiente contenido:
Y ya podremos ver los comentarios en cada entrada:
Ahora vamos a implementar la funcionalidad para añadir comentarios. Para esto tenemos que
generar un formulario con Doctrine.
Se debe haber creado la clase con el siguiente contenido:
Necesitaremos un controlador para manejar este formulario. Para ello añadimos una nueva ruta:
Ahora tenemos que crear el CommentController.php:
Nota: Los parámetros de this→createForm en funcion createAction deben ser igual que en newAction.
Ahora creamos la vista form.html.twig en la ruta especificada:
Ahora creamos la vista create.html.twig:
Ahora hay que modificar el show.html.twig:
Y ya podemos añadir comentarios:
Podemos hacer que la vista de cada entrada en el home ofrezca info relativa al número de
comentarios que tiene esta entrada, e incluso convertir ese número en un enlace que nos lleve
directamente a esos comentarios en la entrada. Para ello tenemos que modificar el index.html.twig
del views/Page:
Vemos como dentro del href de la etiqueta <a> indicamos la ruta de la entrada del blog e incluso
con “#comments” indicamos que el navegador haga scroll vertical hasta llegar a la zona de los
comentarios. Posteriormente, añadimos el texto de la etiqueta <a>, que será la longitud del array de
comentarios.
Ahora vamos a implementar la barra lateral. Para ello añadimos en BlogRepository.php:
Y también:
Ahora vamos al PageController.php y añadimos:
Creamos sidebar.css en web/css con el siguiente contenido:
Creamos en Resources/views/Page el sidebar.html.twig:
Y por último en el layout.html.twig:
Finalmente tenemos:
Ahora para añadir a la barra lateral los comentarios más recientes tenemos que hacer lo siguiente:
Añadimos en el CommentRepository.php:
Ahora vamos al PageController.php y modificamos el sidebarAction:
Ahora en el config.yml (dentro de app/config/) incluimos:
En el sidebar.html.twig añadimos:
Y vemos que el blog ha cambiado:

Más contenido relacionado

PDF
Primera app
DOC
GUIA DE LABORATORIO PHONE GAP JQUERY MOBILE CARGADO DE_DATOS_DE_REGISTROS...
PPTX
PDF
Manual Swing-Java-PostgreSQL
PPTX
instalacion y conexion a base de datos postgrest /java
PDF
Foca API v0.1
PPT
Construccion a través de compontes
PDF
Latch en Linux (Ubuntu): El cerrojo digital
Primera app
GUIA DE LABORATORIO PHONE GAP JQUERY MOBILE CARGADO DE_DATOS_DE_REGISTROS...
Manual Swing-Java-PostgreSQL
instalacion y conexion a base de datos postgrest /java
Foca API v0.1
Construccion a través de compontes
Latch en Linux (Ubuntu): El cerrojo digital

La actualidad más candente (20)

DOCX
Tutorial de persistencia en java con postgresql
DOC
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
PDF
Tutorial de jpa para windows usando net beans y mysql parte 1
PDF
Tutorial git comandos rafael mirandaibanez
PDF
Laravel vc
PPSX
ConexióN A Base De Datos En Netbeans
PDF
Eclipse para novatos java
PPTX
Tutorial net beans
PDF
Crear una base de datos mysql con un script de sql
PDF
Configurar entorno Android
PPSX
Reporte Java con JasperReport
PDF
Primeros pasos con Backbone js, por Xavier Aznar
PPT
Power point report
DOCX
Manual Netbeans Bases Datos2
PDF
Reportes en java con i report y netbeans
PDF
Integración de Netbeans con Ireport y SQL Server
ODT
Ruby on Rails Workshop
PPTX
Tutorial eclipse
Tutorial de persistencia en java con postgresql
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
Tutorial de jpa para windows usando net beans y mysql parte 1
Tutorial git comandos rafael mirandaibanez
Laravel vc
ConexióN A Base De Datos En Netbeans
Eclipse para novatos java
Tutorial net beans
Crear una base de datos mysql con un script de sql
Configurar entorno Android
Reporte Java con JasperReport
Primeros pasos con Backbone js, por Xavier Aznar
Power point report
Manual Netbeans Bases Datos2
Reportes en java con i report y netbeans
Integración de Netbeans con Ireport y SQL Server
Ruby on Rails Workshop
Tutorial eclipse
Publicidad

Destacado (14)

PPTX
The Art Of The Titles Reseach
DOCX
Shooting schedule
PDF
Instalacion symfony2
PPT
Toyota presentation
PPTX
Questionnaire Results
DOCX
Evaluation Question Three- what have you learned from your audience feedback?
PPTX
Shots and angles
PDF
Completando blog
PPTX
The History of Music
PPTX
My music video idea
PDF
Doctrine symfony
PPTX
Local Citation Management
PPTX
High Budget Institutions
PDF
850-0490-00 Rev A-Oscillatory MAP ABP Case Study
The Art Of The Titles Reseach
Shooting schedule
Instalacion symfony2
Toyota presentation
Questionnaire Results
Evaluation Question Three- what have you learned from your audience feedback?
Shots and angles
Completando blog
The History of Music
My music video idea
Doctrine symfony
Local Citation Management
High Budget Institutions
850-0490-00 Rev A-Oscillatory MAP ABP Case Study
Publicidad

Similar a Doctrine symfony (20)

ODP
Taller introduccion symfony2
PPT
Iniciación Con CakePHP
PPTX
CRUD básico con Symfony
PDF
Proyecto web Php-MySQL-Ajax-Flex
PDF
Clase 14 bundles útiles
PPT
Symfony Parte 2
PDF
Iniciación PHP 5. Ejercicios
PDF
Symfony parte 4
PPTX
Charla Hello Real World para PHPmad
PDF
Mis primeros pasos con Symfony 2
PDF
Clase 3 instalación y primeros pasos
PDF
Introducción al framework Symfony
PDF
Intro a cakephp
PDF
Intro a cakephp
PDF
Clase 4 routing
PPT
Php Bitter Sweet Symfony!
PDF
Zen Scaffolding - Programador PHP
ODP
Symfony: construyendo aplicaciones web
PDF
Tutorial de cakePHP itst
Taller introduccion symfony2
Iniciación Con CakePHP
CRUD básico con Symfony
Proyecto web Php-MySQL-Ajax-Flex
Clase 14 bundles útiles
Symfony Parte 2
Iniciación PHP 5. Ejercicios
Symfony parte 4
Charla Hello Real World para PHPmad
Mis primeros pasos con Symfony 2
Clase 3 instalación y primeros pasos
Introducción al framework Symfony
Intro a cakephp
Intro a cakephp
Clase 4 routing
Php Bitter Sweet Symfony!
Zen Scaffolding - Programador PHP
Symfony: construyendo aplicaciones web
Tutorial de cakePHP itst

Más de rmirandaibanez (20)

PDF
Instalación Android Studio
PDF
Tutorial git comandos
PDF
Control de versiones en eclipse
PDF
Control de versiones en eclipse
PDF
Sisinf practica1 requerimientos_so
PDF
Caso transformacion modelo ei modelo relacional
PDF
Reglas conversión modelo relacional esquema
PDF
Caso transformacion modelo EI - modelo relacional
PDF
Caso transformacion modelo EI - Modelo relacional
ODT
Ejercicio vlsm complejo
PDF
Reglas conversión modelo relacional
PDF
Instalación Eclipse. Básico
PDF
Java - Metodos - Iterativo
PDF
Documentación practica 2
PDF
Cuestionarios SGBD y arboles B+
PDF
Introducción a lenguajes de programación
ODT
Detalle de creacion de "Mi primera base de datos"
ODT
Detalle de creación "Mi primera base de datos"
ODT
Detalle de elaboración de "Mi primera base de datos"
ODT
1ª práctica Lenguaje Marcas. Ejemplo 1
Instalación Android Studio
Tutorial git comandos
Control de versiones en eclipse
Control de versiones en eclipse
Sisinf practica1 requerimientos_so
Caso transformacion modelo ei modelo relacional
Reglas conversión modelo relacional esquema
Caso transformacion modelo EI - modelo relacional
Caso transformacion modelo EI - Modelo relacional
Ejercicio vlsm complejo
Reglas conversión modelo relacional
Instalación Eclipse. Básico
Java - Metodos - Iterativo
Documentación practica 2
Cuestionarios SGBD y arboles B+
Introducción a lenguajes de programación
Detalle de creacion de "Mi primera base de datos"
Detalle de creación "Mi primera base de datos"
Detalle de elaboración de "Mi primera base de datos"
1ª práctica Lenguaje Marcas. Ejemplo 1

Último (20)

PPTX
EPCE_EXCEL 365 CURSO DE ENTRENAMIENTO.pptx
PPTX
DOROTHEA E OREM EXPO.pptx de una teoridta importante
PDF
PRESENTACION DE LA ASIGNATURA materiales no convencionales.pdf
PPTX
fisioterapia 6 semestre - ---- serealizo
PDF
2425_s9_1_Bitacora_para_la_reflexion.pdf
PDF
REPORTE DE VICTIMAS POR HOMICIDIO DOLOSO IRAPUATO JULIO 2025
PDF
Presentacion Gestion de Recursos DIA 1.pdf
PDF
Pobreza porcentual en el mundo y sistemas socioeconómicos (1945-2030).pdf
PDF
MOVIMIENTO DE TIERRA Y ASFALTO.pdf 2025A
DOCX
LAS DROGAS, SU CONSUMO Y LAS ADICCIONES.docx
PPTX
TICS EN HONDURAS, PAIS DE CENTROAMERICA.pptx
PDF
MAPAMENTALLa tendencia pedagógica basada en competencias hacia una.pdf
PPTX
Inteligencia_Artificialdelosk_Mujer.pptx
PDF
lavado de manos_20250805_212935_0000.pdf
PPTX
lareformaprevisional-091013175510-phpapp01.pptx
PDF
dhjhfjhjcnjhghhhdfhuhhchchuuhuhduhduddyhdu
PPT
2010_06 FSI_ASBA Pruebas de Stress de Riesgo de Crédito El Caso Peruano MLUY_...
PDF
Registro de Limpieza y Desinfección.pdf1
PDF
Unidad Nº 1 Introduccion a Estadísticas
PDF
SEMANA 13.pdf MICROBIOLOGÍA Y PARÁSITISMO
EPCE_EXCEL 365 CURSO DE ENTRENAMIENTO.pptx
DOROTHEA E OREM EXPO.pptx de una teoridta importante
PRESENTACION DE LA ASIGNATURA materiales no convencionales.pdf
fisioterapia 6 semestre - ---- serealizo
2425_s9_1_Bitacora_para_la_reflexion.pdf
REPORTE DE VICTIMAS POR HOMICIDIO DOLOSO IRAPUATO JULIO 2025
Presentacion Gestion de Recursos DIA 1.pdf
Pobreza porcentual en el mundo y sistemas socioeconómicos (1945-2030).pdf
MOVIMIENTO DE TIERRA Y ASFALTO.pdf 2025A
LAS DROGAS, SU CONSUMO Y LAS ADICCIONES.docx
TICS EN HONDURAS, PAIS DE CENTROAMERICA.pptx
MAPAMENTALLa tendencia pedagógica basada en competencias hacia una.pdf
Inteligencia_Artificialdelosk_Mujer.pptx
lavado de manos_20250805_212935_0000.pdf
lareformaprevisional-091013175510-phpapp01.pptx
dhjhfjhjcnjhghhhdfhuhhchchuuhuhduhduddyhdu
2010_06 FSI_ASBA Pruebas de Stress de Riesgo de Crédito El Caso Peruano MLUY_...
Registro de Limpieza y Desinfección.pdf1
Unidad Nº 1 Introduccion a Estadísticas
SEMANA 13.pdf MICROBIOLOGÍA Y PARÁSITISMO

Doctrine symfony

  • 1. TRABAJO CON BASE DE DATOS: DOCTRINE Trabajaremos con anotaciones (podríamos optar también por ficheros yml, php o xml). El primer paso es configurar la base de datos (recordar que durante la instalación de Symfony se establecieron los parámetros por defecto), en la ruta: El siguiente paso es crear una base de datos para el proyecto, se puede hacer desde phpmyadmin o desde consola: Symfony permite crear las clases a partir del modelo relacional (ingeniería inversa). Pero vamos a hacerlo a la inversa, creando las clases y posteriormente el modelo relacional.
  • 2. Tenemos que crear la entidad Blog.php dentro de la carpeta Entity: Y ahora para crear el esquema en base a esa clase: Y observamos que se ha creado la tabla:
  • 3. Y si volvemos a abrir la clase Blog.php observamos que se han creado automáticamente los setters y los getters. El siguiente paso es generar la ruta:
  • 4. Vamos a crear un nuevo controlador, de manera que trabajaremos con un controlador para cada entidad: El siguiente paso, una vez mas, es crear la vista, en la carpeta Resources/views/Blog (previamente creada).
  • 5. El siguiente paso es instalar el paquete de Doctrine DataFixtures, para poder finalmente persistir datos en la base de datos, donde introduciremos las diferentes entradas de la base de datos. Para ello: Hay que instalar también el paquete Fixtures, introducimos estas dos líneas en composer.json: Actualizamos: Ahora tenemos que tener también los paquetes “fixtures”:
  • 6. Lo siguientes es registrar los paquetes en el appkernel. Introducimos estas tres líneas: Ahora tenemos que añadir los accesorios (datos). Para ellos creamos el fichero BlogFixtures.php:
  • 7. Y lo llevamos a la carpeta (creada previamente): Hay que modificar la clase BlogFixtures.php para añadir dos nuevos “uses”, extender la clase de AbstractFixture y modificar el parámetro recibido por la funcion load: Si todo ha ido bien al ejecutar este comando para cargar los datos se recibirá el siguiente mensaje: Ahora probamos a introducir en la URL del navegador: Tras esto volvemos a cargar esa URL y veremos que entramos en un post con contenido al que aún le falta la imagen:
  • 8. Tras añadir imágenes a la carpeta /web/images, y modificar el archivo screen.css en la carpeta css (que ya teníamos creada anteriormente), el resultado es el siguiente: Ahora hay que modificar el archivo Blog.php, para registrar sellos temporales del momento de la persistencia en la base de datos:
  • 9. Introducimos este constructor y función para que la aplicación la ejecute antes de hacer persistentes los datos en la base de datos (@ORMPreUpdate): Y volvemos a cargar los datos:
  • 10. A continuación tenemos que cambiar el index del Page (Blogger/BlogBundle/Resources/views/Page/index.html.twig) para poder mostrar todas las entradas en la página principal. Vamos ahora al PageController (Blogger/BlogBundle/Controller/PageController.php):
  • 11. Ahora vemos que en nuestra home se enumeran todas las entradas. Ahora vamos a la entidad Blog (Blog.php), vemos que la función getBlog devuelve blog. Tenemos que modificarlo de la siguiente manera: Esto sirve para poder determinar o limitar el número de caracteres de cada entrada que sacamos en el listado del home. Tras esto volvemos a la plantilla index.html.twig, y en la llamada a la entidad Blog podemos pasarle como parámetro la longitud de la entrada.
  • 12. Ahora vamos a separar la consulta doctrine del controlador, para poder reutilizarla en cualquier momento sin tener que acceder al controlador. Para ello trabajaremos con repositorios, un script donde pondremos todas las consultar doctrine. Dentro de la carpeta Entity creamos una carpeta Repository y dentro creamos BlogRepository.php con el siguiente contenido:
  • 13. Y ahora cambiamos en el PageController la consulta por una llamada al repositorio:
  • 14. Ahora vamos a trabajar los comentarios. Como un comentario es de un blog pero un blog tiene muchos comentarios esto se trabaja con anotaciones. En primer lugar creo la entidad Comment en la carpeta Entity.
  • 15. Y en la entidad Blog: php bin/console doctrine:generate:entities Blogger Tras esto me ha debido crear todos los métodos de acceso en la clase Comment. Hacemos persistentes las clases en la base de datos, lo haremos con migraciones.
  • 16. Y veremos que se ha generado automáticamente la tabla de comentarios en nuestra base de datos: Lo siguiente es cargar los comentarios. Para ello tenemos que llevarnos el fichero a DataFixtures y después hacer un load.
  • 17. Añadiendo al final también:
  • 18. Ahora en la clase CommentRepository.php (creada automaticamente) añadimos: Ahora en BlogController.php cambiamos:
  • 19. Ahora cambiamos la plantilla show.html.twig: Creamos en la carpeta views otra carpeta llamada Comment, con un archivo index en su interior con el siguiente contenido: Y ya podremos ver los comentarios en cada entrada:
  • 20. Ahora vamos a implementar la funcionalidad para añadir comentarios. Para esto tenemos que generar un formulario con Doctrine. Se debe haber creado la clase con el siguiente contenido: Necesitaremos un controlador para manejar este formulario. Para ello añadimos una nueva ruta:
  • 21. Ahora tenemos que crear el CommentController.php: Nota: Los parámetros de this→createForm en funcion createAction deben ser igual que en newAction.
  • 22. Ahora creamos la vista form.html.twig en la ruta especificada: Ahora creamos la vista create.html.twig: Ahora hay que modificar el show.html.twig:
  • 23. Y ya podemos añadir comentarios: Podemos hacer que la vista de cada entrada en el home ofrezca info relativa al número de comentarios que tiene esta entrada, e incluso convertir ese número en un enlace que nos lleve directamente a esos comentarios en la entrada. Para ello tenemos que modificar el index.html.twig del views/Page: Vemos como dentro del href de la etiqueta <a> indicamos la ruta de la entrada del blog e incluso con “#comments” indicamos que el navegador haga scroll vertical hasta llegar a la zona de los comentarios. Posteriormente, añadimos el texto de la etiqueta <a>, que será la longitud del array de comentarios.
  • 24. Ahora vamos a implementar la barra lateral. Para ello añadimos en BlogRepository.php: Y también: Ahora vamos al PageController.php y añadimos:
  • 25. Creamos sidebar.css en web/css con el siguiente contenido: Creamos en Resources/views/Page el sidebar.html.twig: Y por último en el layout.html.twig:
  • 26. Finalmente tenemos: Ahora para añadir a la barra lateral los comentarios más recientes tenemos que hacer lo siguiente: Añadimos en el CommentRepository.php: Ahora vamos al PageController.php y modificamos el sidebarAction:
  • 27. Ahora en el config.yml (dentro de app/config/) incluimos: En el sidebar.html.twig añadimos: Y vemos que el blog ha cambiado: