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

La actualidad más candente

Tutorial de persistencia en java con postgresql
Tutorial de persistencia en java con  postgresqlTutorial de persistencia en java con  postgresql
Tutorial de persistencia en java con postgresql
Carlos Anrango
 
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
GUIA DE  LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...GUIA DE  LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
Ivan Petrlik
 
Tutorial de jpa para windows usando net beans y mysql parte 1
Tutorial de jpa para windows usando net beans y mysql parte 1Tutorial de jpa para windows usando net beans y mysql parte 1
Tutorial de jpa para windows usando net beans y mysql parte 1Henry Mendoza Puerta
 
Tutorial git comandos rafael mirandaibanez
Tutorial git comandos rafael mirandaibanezTutorial git comandos rafael mirandaibanez
Tutorial git comandos rafael mirandaibanez
rmirandaibanez
 
Laravel vc
Laravel vcLaravel vc
Laravel vc
Victor Cusco
 
ConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En NetbeansConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En Netbeansguest044583b
 
Eclipse para novatos java
Eclipse para novatos javaEclipse para novatos java
Eclipse para novatos javamartaferrari
 
Reportes
ReportesReportes
Tutorial net beans
Tutorial net beansTutorial net beans
Tutorial net beans
Yarker Castillo del Rosario
 
Crear una base de datos mysql con un script de sql
Crear una base de datos mysql con un script de sqlCrear una base de datos mysql con un script de sql
Crear una base de datos mysql con un script de sqlEmerson Garay
 
File
FileFile
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
jubacalo
 
Reporte Java con JasperReport
Reporte Java con JasperReportReporte Java con JasperReport
Reporte Java con JasperReport
Geovanny Manuel Mendoza Gonzalez
 
Primeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier Aznar
Pablo Aguilera
 
Power point report
Power point reportPower point report
Power point report
jhoselin stefany quispe diaz
 
Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2mtemarialuisa
 
Reportes en java con i report y netbeans
Reportes en java con i report y netbeansReportes en java con i report y netbeans
Reportes en java con i report y netbeans
hernanluis
 
Integración de Netbeans con Ireport y SQL Server
Integración de Netbeans con Ireport y SQL ServerIntegración de Netbeans con Ireport y SQL Server
Integración de Netbeans con Ireport y SQL Server
SonGoku10
 
Ruby on Rails Workshop
Ruby on Rails WorkshopRuby on Rails Workshop
Ruby on Rails Workshop
Gustavo Andres Brey
 

La actualidad más candente (20)

Tutorial de persistencia en java con postgresql
Tutorial de persistencia en java con  postgresqlTutorial de persistencia en java con  postgresql
Tutorial de persistencia en java con postgresql
 
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
GUIA DE  LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...GUIA DE  LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
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 de jpa para windows usando net beans y mysql parte 1Tutorial de jpa para windows usando net beans y mysql parte 1
Tutorial de jpa para windows usando net beans y mysql parte 1
 
Tutorial git comandos rafael mirandaibanez
Tutorial git comandos rafael mirandaibanezTutorial git comandos rafael mirandaibanez
Tutorial git comandos rafael mirandaibanez
 
Laravel vc
Laravel vcLaravel vc
Laravel vc
 
ConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En NetbeansConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En Netbeans
 
Eclipse para novatos java
Eclipse para novatos javaEclipse para novatos java
Eclipse para novatos java
 
Reportes
ReportesReportes
Reportes
 
Tutorial net beans
Tutorial net beansTutorial net beans
Tutorial net beans
 
Crear una base de datos mysql con un script de sql
Crear una base de datos mysql con un script de sqlCrear una base de datos mysql con un script de sql
Crear una base de datos mysql con un script de sql
 
File
FileFile
File
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
Reporte Java con JasperReport
Reporte Java con JasperReportReporte Java con JasperReport
Reporte Java con JasperReport
 
Primeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier Aznar
 
Power point report
Power point reportPower point report
Power point report
 
Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2
 
Reportes en java con i report y netbeans
Reportes en java con i report y netbeansReportes en java con i report y netbeans
Reportes en java con i report y netbeans
 
Integración de Netbeans con Ireport y SQL Server
Integración de Netbeans con Ireport y SQL ServerIntegración de Netbeans con Ireport y SQL Server
Integración de Netbeans con Ireport y SQL Server
 
Ruby on Rails Workshop
Ruby on Rails WorkshopRuby on Rails Workshop
Ruby on Rails Workshop
 
Tutorial eclipse
Tutorial eclipseTutorial eclipse
Tutorial eclipse
 

Destacado

The Art Of The Titles Reseach
The Art Of The Titles ReseachThe Art Of The Titles Reseach
The Art Of The Titles Reseach
Kiera_Herbert
 
Shooting schedule
Shooting schedule  Shooting schedule
Shooting schedule
Kiera_Herbert
 
Instalacion symfony2
Instalacion symfony2Instalacion symfony2
Instalacion symfony2
rmirandaibanez
 
Toyota presentation
Toyota presentationToyota presentation
Toyota presentation
Govind Kudambal
 
Questionnaire Results
Questionnaire ResultsQuestionnaire Results
Questionnaire Results
Kiera_Herbert
 
Evaluation Question Three- what have you learned from your audience feedback?
Evaluation Question Three- what have you learned from your audience feedback?Evaluation Question Three- what have you learned from your audience feedback?
Evaluation Question Three- what have you learned from your audience feedback?
Kiera_Herbert
 
Shots and angles
Shots and anglesShots and angles
Shots and angles
Kiera_Herbert
 
Completando blog
Completando blogCompletando blog
Completando blog
rmirandaibanez
 
The History of Music
The History of MusicThe History of Music
The History of Music
Kiera_Herbert
 
My music video idea
My music video ideaMy music video idea
My music video idea
Kiera_Herbert
 
Doctrine symfony
Doctrine symfonyDoctrine symfony
Doctrine symfony
rmirandaibanez
 
Local Citation Management
Local Citation ManagementLocal Citation Management
Local Citation Management
RepairShopMarketing
 
High Budget Institutions
High Budget InstitutionsHigh Budget Institutions
High Budget Institutions
Kiera_Herbert
 
850-0490-00 Rev A-Oscillatory MAP ABP Case Study
850-0490-00 Rev A-Oscillatory MAP ABP Case Study 850-0490-00 Rev A-Oscillatory MAP ABP Case Study
850-0490-00 Rev A-Oscillatory MAP ABP Case Study Christina Mason
 

Destacado (14)

The Art Of The Titles Reseach
The Art Of The Titles ReseachThe Art Of The Titles Reseach
The Art Of The Titles Reseach
 
Shooting schedule
Shooting schedule  Shooting schedule
Shooting schedule
 
Instalacion symfony2
Instalacion symfony2Instalacion symfony2
Instalacion symfony2
 
Toyota presentation
Toyota presentationToyota presentation
Toyota presentation
 
Questionnaire Results
Questionnaire ResultsQuestionnaire Results
Questionnaire Results
 
Evaluation Question Three- what have you learned from your audience feedback?
Evaluation Question Three- what have you learned from your audience feedback?Evaluation Question Three- what have you learned from your audience feedback?
Evaluation Question Three- what have you learned from your audience feedback?
 
Shots and angles
Shots and anglesShots and angles
Shots and angles
 
Completando blog
Completando blogCompletando blog
Completando blog
 
The History of Music
The History of MusicThe History of Music
The History of Music
 
My music video idea
My music video ideaMy music video idea
My music video idea
 
Doctrine symfony
Doctrine symfonyDoctrine symfony
Doctrine symfony
 
Local Citation Management
Local Citation ManagementLocal Citation Management
Local Citation Management
 
High Budget Institutions
High Budget InstitutionsHigh Budget Institutions
High Budget Institutions
 
850-0490-00 Rev A-Oscillatory MAP ABP Case Study
850-0490-00 Rev A-Oscillatory MAP ABP Case Study 850-0490-00 Rev A-Oscillatory MAP ABP Case Study
850-0490-00 Rev A-Oscillatory MAP ABP Case Study
 

Similar a Doctrine symfony

Conociendo el Patron Modelo Vista Controlador
Conociendo el Patron   Modelo Vista ControladorConociendo el Patron   Modelo Vista Controlador
Conociendo el Patron Modelo Vista Controlador
lissette_torrealba
 
Vistiendo a WordPress
Vistiendo a WordPressVistiendo a WordPress
Vistiendo a WordPress
Lorena Fernández
 
WPF Series - 01
WPF Series - 01WPF Series - 01
WPF Series - 01kazcorp
 
Creación de un sitio web en wordpress
Creación de un sitio web en wordpressCreación de un sitio web en wordpress
Creación de un sitio web en wordpress
Milton González
 
Guia basica de ruby on rails
Guia basica de ruby on railsGuia basica de ruby on rails
Guia basica de ruby on rails
roberthp09
 
Hands on Lab: Almacenamiento local con base de datos, launchers y choosers
Hands on Lab: Almacenamiento local con base de datos, launchers y choosersHands on Lab: Almacenamiento local con base de datos, launchers y choosers
Hands on Lab: Almacenamiento local con base de datos, launchers y choosers
Sorey García
 
Practica Web Sesión 5
Practica Web Sesión 5Practica Web Sesión 5
Practica Web Sesión 5
AdalbertoBarajasCuri
 
Mi app-asp-net-mvc2
Mi app-asp-net-mvc2Mi app-asp-net-mvc2
Mi app-asp-net-mvc2
Enrique Valdez
 
Computación avanzada en java cert
Computación avanzada en java certComputación avanzada en java cert
Computación avanzada en java cert
Maestros Online
 
Alojar un dominio en servidor propio e instalar Wordpress
Alojar un dominio en servidor propio e instalar WordpressAlojar un dominio en servidor propio e instalar Wordpress
Alojar un dominio en servidor propio e instalar Wordpress
MJ Cachón Yáñez
 
Linq to sql 8
Linq to sql 8Linq to sql 8
Linq to sql 8
jcfarit
 
Mvc
MvcMvc
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
MarlonAlbertoGalvis
 
Funciones definidas por_el_usuario_y_variables_superglobales
Funciones definidas por_el_usuario_y_variables_superglobalesFunciones definidas por_el_usuario_y_variables_superglobales
Funciones definidas por_el_usuario_y_variables_superglobales
CarlosUribe93
 
Instructivo themewordpress
Instructivo themewordpressInstructivo themewordpress
Instructivo themewordpress
Hernán Alejandro Roa Reyes
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corporacion de Industrias Tecnologicas S.A.
 
Webbrowser de vb 6.0 y vb.net
Webbrowser de vb 6.0 y vb.netWebbrowser de vb 6.0 y vb.net
Webbrowser de vb 6.0 y vb.netadezhiz
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
jose luis barrientos
 

Similar a Doctrine symfony (20)

Conociendo el Patron Modelo Vista Controlador
Conociendo el Patron   Modelo Vista ControladorConociendo el Patron   Modelo Vista Controlador
Conociendo el Patron Modelo Vista Controlador
 
Vistiendo a WordPress
Vistiendo a WordPressVistiendo a WordPress
Vistiendo a WordPress
 
WPF Series - 01
WPF Series - 01WPF Series - 01
WPF Series - 01
 
Creación de un sitio web en wordpress
Creación de un sitio web en wordpressCreación de un sitio web en wordpress
Creación de un sitio web en wordpress
 
Guia basica de ruby on rails
Guia basica de ruby on railsGuia basica de ruby on rails
Guia basica de ruby on rails
 
Hands on Lab: Almacenamiento local con base de datos, launchers y choosers
Hands on Lab: Almacenamiento local con base de datos, launchers y choosersHands on Lab: Almacenamiento local con base de datos, launchers y choosers
Hands on Lab: Almacenamiento local con base de datos, launchers y choosers
 
Practica Web Sesión 5
Practica Web Sesión 5Practica Web Sesión 5
Practica Web Sesión 5
 
Mi app-asp-net-mvc2
Mi app-asp-net-mvc2Mi app-asp-net-mvc2
Mi app-asp-net-mvc2
 
Como crear blog
Como crear blogComo crear blog
Como crear blog
 
Computación avanzada en java cert
Computación avanzada en java certComputación avanzada en java cert
Computación avanzada en java cert
 
Alojar un dominio en servidor propio e instalar Wordpress
Alojar un dominio en servidor propio e instalar WordpressAlojar un dominio en servidor propio e instalar Wordpress
Alojar un dominio en servidor propio e instalar Wordpress
 
Funciones
FuncionesFunciones
Funciones
 
Linq to sql 8
Linq to sql 8Linq to sql 8
Linq to sql 8
 
Mvc
MvcMvc
Mvc
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Funciones definidas por_el_usuario_y_variables_superglobales
Funciones definidas por_el_usuario_y_variables_superglobalesFunciones definidas por_el_usuario_y_variables_superglobales
Funciones definidas por_el_usuario_y_variables_superglobales
 
Instructivo themewordpress
Instructivo themewordpressInstructivo themewordpress
Instructivo themewordpress
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
 
Webbrowser de vb 6.0 y vb.net
Webbrowser de vb 6.0 y vb.netWebbrowser de vb 6.0 y vb.net
Webbrowser de vb 6.0 y vb.net
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
 

Más de rmirandaibanez

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

Más de rmirandaibanez (20)

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

Último

Licencias por enfermedad de hijo menor de 2 años chile
Licencias por enfermedad de hijo menor de 2 años chileLicencias por enfermedad de hijo menor de 2 años chile
Licencias por enfermedad de hijo menor de 2 años chile
franciscasalinaspobl
 
Tecnologia de materiales T01- Agregados.docx (1).pdf
Tecnologia de materiales T01- Agregados.docx (1).pdfTecnologia de materiales T01- Agregados.docx (1).pdf
Tecnologia de materiales T01- Agregados.docx (1).pdf
uriel132
 
ORIENTACIONES PSIET orientación sobre el pesiet
ORIENTACIONES PSIET orientación sobre el pesietORIENTACIONES PSIET orientación sobre el pesiet
ORIENTACIONES PSIET orientación sobre el pesiet
Maria Apellidos
 
Presentación sobre la geometría, aplicaciones y ramas
Presentación sobre la geometría, aplicaciones y ramasPresentación sobre la geometría, aplicaciones y ramas
Presentación sobre la geometría, aplicaciones y ramas
JosMuoz943377
 
Ojiva porcentual para el análisis de datos
Ojiva porcentual para el análisis de datosOjiva porcentual para el análisis de datos
Ojiva porcentual para el análisis de datos
JaimeYael
 
Flujograma: Reserva de habitación en un hotel
Flujograma: Reserva de habitación en un hotelFlujograma: Reserva de habitación en un hotel
Flujograma: Reserva de habitación en un hotel
f4llenangel345
 
SISTEMA PRIVADO DE PENSIONES- de la cruz.pptx
SISTEMA PRIVADO DE PENSIONES- de la cruz.pptxSISTEMA PRIVADO DE PENSIONES- de la cruz.pptx
SISTEMA PRIVADO DE PENSIONES- de la cruz.pptx
mogollonespinoza17
 
Análisis Datos imprecisos con lógica difusa.pdf
Análisis Datos imprecisos con lógica difusa.pdfAnálisis Datos imprecisos con lógica difusa.pdf
Análisis Datos imprecisos con lógica difusa.pdf
ReAViILICo
 
1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx
1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx
1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx
EliseoLuisRamrez
 
Desarrollo de Habilidades de Pensamiento Informatica
Desarrollo de Habilidades de Pensamiento InformaticaDesarrollo de Habilidades de Pensamiento Informatica
Desarrollo de Habilidades de Pensamiento Informatica
floralbaortega88
 
Presentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.pptxPresentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.pptx
hlscomunicaciones
 
Presentación diagrama de flujo del desarrollo aronautico.pptx
Presentación diagrama de flujo del desarrollo aronautico.pptxPresentación diagrama de flujo del desarrollo aronautico.pptx
Presentación diagrama de flujo del desarrollo aronautico.pptx
cmrodriguezortiz1103
 
Instituciones financieras globales por efectivo disponible (2024).pdf
Instituciones financieras globales por efectivo disponible (2024).pdfInstituciones financieras globales por efectivo disponible (2024).pdf
Instituciones financieras globales por efectivo disponible (2024).pdf
JC Díaz Herrera
 
Mapa-conceptual-del-Neoclasicismo-4.pptx
Mapa-conceptual-del-Neoclasicismo-4.pptxMapa-conceptual-del-Neoclasicismo-4.pptx
Mapa-conceptual-del-Neoclasicismo-4.pptx
diegoandrerodriguez2
 
Claves Ipsos numero 29 --- Mayo 2024.pdf
Claves Ipsos numero 29 --- Mayo 2024.pdfClaves Ipsos numero 29 --- Mayo 2024.pdf
Claves Ipsos numero 29 --- Mayo 2024.pdf
Emisor Digital
 
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad  (2024).pdfPrimeros 70 países por IDH ajustado por desigualdad  (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
JC Díaz Herrera
 
TABla de detracciones 123456 antonela tirado 653266666666666
TABla de detracciones 123456 antonela tirado 653266666666666TABla de detracciones 123456 antonela tirado 653266666666666
TABla de detracciones 123456 antonela tirado 653266666666666
LizetTiradoRodriguez
 
Diapositivas D.I.P.. sobre la importancia que tiene la interpol en Honduraspptx
Diapositivas D.I.P.. sobre la importancia que tiene la interpol en HonduraspptxDiapositivas D.I.P.. sobre la importancia que tiene la interpol en Honduraspptx
Diapositivas D.I.P.. sobre la importancia que tiene la interpol en Honduraspptx
WalterOrdoez22
 
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdfRESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
Observatorio Vitivinícola Argentino
 
Países_por_participacion_porcentual_en_el PNB global (2024) .pdf
Países_por_participacion_porcentual_en_el PNB global (2024) .pdfPaíses_por_participacion_porcentual_en_el PNB global (2024) .pdf
Países_por_participacion_porcentual_en_el PNB global (2024) .pdf
JC Díaz Herrera
 

Último (20)

Licencias por enfermedad de hijo menor de 2 años chile
Licencias por enfermedad de hijo menor de 2 años chileLicencias por enfermedad de hijo menor de 2 años chile
Licencias por enfermedad de hijo menor de 2 años chile
 
Tecnologia de materiales T01- Agregados.docx (1).pdf
Tecnologia de materiales T01- Agregados.docx (1).pdfTecnologia de materiales T01- Agregados.docx (1).pdf
Tecnologia de materiales T01- Agregados.docx (1).pdf
 
ORIENTACIONES PSIET orientación sobre el pesiet
ORIENTACIONES PSIET orientación sobre el pesietORIENTACIONES PSIET orientación sobre el pesiet
ORIENTACIONES PSIET orientación sobre el pesiet
 
Presentación sobre la geometría, aplicaciones y ramas
Presentación sobre la geometría, aplicaciones y ramasPresentación sobre la geometría, aplicaciones y ramas
Presentación sobre la geometría, aplicaciones y ramas
 
Ojiva porcentual para el análisis de datos
Ojiva porcentual para el análisis de datosOjiva porcentual para el análisis de datos
Ojiva porcentual para el análisis de datos
 
Flujograma: Reserva de habitación en un hotel
Flujograma: Reserva de habitación en un hotelFlujograma: Reserva de habitación en un hotel
Flujograma: Reserva de habitación en un hotel
 
SISTEMA PRIVADO DE PENSIONES- de la cruz.pptx
SISTEMA PRIVADO DE PENSIONES- de la cruz.pptxSISTEMA PRIVADO DE PENSIONES- de la cruz.pptx
SISTEMA PRIVADO DE PENSIONES- de la cruz.pptx
 
Análisis Datos imprecisos con lógica difusa.pdf
Análisis Datos imprecisos con lógica difusa.pdfAnálisis Datos imprecisos con lógica difusa.pdf
Análisis Datos imprecisos con lógica difusa.pdf
 
1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx
1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx
1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx
 
Desarrollo de Habilidades de Pensamiento Informatica
Desarrollo de Habilidades de Pensamiento InformaticaDesarrollo de Habilidades de Pensamiento Informatica
Desarrollo de Habilidades de Pensamiento Informatica
 
Presentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.pptxPresentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.pptx
 
Presentación diagrama de flujo del desarrollo aronautico.pptx
Presentación diagrama de flujo del desarrollo aronautico.pptxPresentación diagrama de flujo del desarrollo aronautico.pptx
Presentación diagrama de flujo del desarrollo aronautico.pptx
 
Instituciones financieras globales por efectivo disponible (2024).pdf
Instituciones financieras globales por efectivo disponible (2024).pdfInstituciones financieras globales por efectivo disponible (2024).pdf
Instituciones financieras globales por efectivo disponible (2024).pdf
 
Mapa-conceptual-del-Neoclasicismo-4.pptx
Mapa-conceptual-del-Neoclasicismo-4.pptxMapa-conceptual-del-Neoclasicismo-4.pptx
Mapa-conceptual-del-Neoclasicismo-4.pptx
 
Claves Ipsos numero 29 --- Mayo 2024.pdf
Claves Ipsos numero 29 --- Mayo 2024.pdfClaves Ipsos numero 29 --- Mayo 2024.pdf
Claves Ipsos numero 29 --- Mayo 2024.pdf
 
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad  (2024).pdfPrimeros 70 países por IDH ajustado por desigualdad  (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
 
TABla de detracciones 123456 antonela tirado 653266666666666
TABla de detracciones 123456 antonela tirado 653266666666666TABla de detracciones 123456 antonela tirado 653266666666666
TABla de detracciones 123456 antonela tirado 653266666666666
 
Diapositivas D.I.P.. sobre la importancia que tiene la interpol en Honduraspptx
Diapositivas D.I.P.. sobre la importancia que tiene la interpol en HonduraspptxDiapositivas D.I.P.. sobre la importancia que tiene la interpol en Honduraspptx
Diapositivas D.I.P.. sobre la importancia que tiene la interpol en Honduraspptx
 
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdfRESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
 
Países_por_participacion_porcentual_en_el PNB global (2024) .pdf
Países_por_participacion_porcentual_en_el PNB global (2024) .pdfPaíses_por_participacion_porcentual_en_el PNB global (2024) .pdf
Países_por_participacion_porcentual_en_el PNB global (2024) .pdf
 

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: