No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

脷ltima oportunidad para asegurar tu aprendizaje por 1 a帽o a precio especial

Antes: $249

Currency
$189/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscr铆bete

Termina en:

1D
1H
59M
58S
Curso de Bases de Datos en Symfony

Curso de Bases de Datos en Symfony

Profesor Italo Morales F

Profesor Italo Morales F

Repaso de lo construido

21/21
Recursos

Nombre del curso: Curso de Bases de Datos con Symfony
Dean: Sebasti谩n Delmont
Faculty Manager: Ricardo Celis
School Owner: Juan David Castro
Profesor: Italo Morales F.
Producci贸n OPS: Lizeth C谩ceres y Roc铆o Mart铆nez.
Edici贸n de video: Juan Leon
Postproducci贸n de audio: Karen Blanco
Dise帽o gr谩fico: Daniel Ordo帽ez
Coordinaci贸n General: Andr茅s Arizmendy, Daniel Guti茅rrez, Carol Baquero, Carlos C茅spedes, Sura Cede帽o y Sara Hern谩ndez.
Revisi贸n: Rodrigo Goitia y Natalia Moreno Espinoza

Aportes 1

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Hola Compa帽eros y Profe, les dejo un breve resumen de lo que fui entendiendo, cualquier correcci贸n o aporte es bien recibida.Espero no den problema todos los errores de ortograf铆a.

Como siempre lo primero que debemos hacer para iniciar un proyecto con symfony es ejecutar el comando 鈥渟ymfony new 鈥渘ombre del archivo鈥濃,luego de que se crea el esqueleto de carpetas ejecutarmos desde la terminal el comando 鈥減hp bin/console鈥 para ver todos los comandos disponibles, luego necesitaremos de composer para asi ejecutar el comando 鈥渃omposer require symfony/maker-bundle --dev鈥, esta instalacion traera con nosotros un monton de nuevos comandos que vamos a necesitar a lo largo de nuestros proyectos,para conocerlos es necesario ejecutar nuevamente el comando 鈥減hp bin/console鈥.

Luego ejecutaremos el comando 鈥渃omposer require symfony/orm-pack鈥, este es el comando que nos permitira trabajar con base de datos desde nuestro proyecto. lo siguiente a la ejecucion del comando anterior es definir(鈥渃onfigurar鈥) nuestra conexion a db mediante el archivo 鈥.env鈥. Una vez definida la conexion para crearla ejecutamos el comando 鈥減hp bin/console doctrine:database:create鈥.

Para seguir ejecutamos el comando 鈥減hp bin/console make:entity鈥 (recordad que las entidades seran convertidas en nuestras tablas de la base de datos, en esta definiremos todas sus propiedades). Estas tablas NO existen aun en mi base de datos. para eso necesito en primer lugar crear la migracion,para ello ejecuto el comando 鈥減hp bin/console make:migration鈥. Este arhcivo de migracion lo que contiene es el script de php necesario para crear las tablas a traves de los comandos SQL, este se crea a partir de nuestra previa configuracion de las entidades. Por esto decimos que la migracion es la estructura inicial de una tabla. Aun con lo anterior mencionado todavia no existen dichas tablas en nuestra DB para ello ejecuto el comando 鈥減hp bin/console doctrine:migrations:migrate鈥, una vez ejecutado este comando ya podremos ver reflejadas nuestras tablas en la base de datos.

A traves del comando 鈥減hp bin/console doctrine:migrations:list鈥,podemos conocer el nombre de la version(entre otros datos) y una vez que conocemos el nombre de esa version darla de baja con el siguiente comando 鈥減hp bin/console doctrine:migrations:execute 鈥渘ombre de la version鈥 --down鈥. Ahora que ya dimos de baja una version antigua para levanar una nueva o recuperar esa que dimos de baja ejecutamos el comando 鈥減hp bin/console doctrine:migrations:migrate鈥. Este metodo 鈥渄own鈥 no es que sale de la nada sino que lo tenemos definido en el archivo 鈥淰ersion鈥 en la carpeta migrations. Cuando en el futuro vayamos generando cambios en nuestras entidades deberemos ir migrando los mismos. Y al momentos de cargarlos en nuestra base de datos otra vez ejecutaremos el comando correspondiente, este lo que hara es actualizar nuestra base de datos con el script SQL presente en nuestro ultimo arhcivo php de version.

->鈥渃omposer require orm-fixtures --dev鈥 (crea la carpeta 鈥淒ataFixtures鈥 con el archivo 鈥淎ppFixtures.php鈥 dentro de la carpeta 鈥渟rc鈥)Todavia sin explicacion
->鈥減hp bin/console make:fixtures鈥 Todavia sin explicacion
->鈥減hp bin/console doctrine:fixtures:load鈥 Permite cargar datos a nuestras tablas de manera directa implementando los metodos presentes en las entidades,
Utiliza el archivo 鈥淎ppFixtures.php鈥 dentro de la carpeta 鈥淒ataFixtures鈥 para hacerlo

->鈥渃ompose require zenstruck/foundry --dev鈥 Nos permite la utilizacion del comando desarrollado a continuacion
->鈥減hp bin/console make:factory鈥 Crea la carpeta Factory con los archivos factory basados en las entidades que determine al momento de generar la "fabrica"
estas 鈥渇abricas鈥 son moldes para la creacion de datos falsos.Estos moldes seran utilizados en la clase 鈥淎ppFixtures鈥 dentro de la carpeta 鈥淒ataFixtures鈥

->鈥渃omposer require symfony/twig-pack鈥 Nos permite manejar plantillas de tipo twig, es decir, nos permite trabajar con 鈥淰istas鈥.
Para trabajar con nuestra estructura front lo primero que deberiamos hacer es ejecutar el comando 鈥渃omposer require symfony/webpack-encore-bundle鈥-
-crea las carpeta assets desde donde voy a manejar el css e importar bootstrap. Para trabajar con el front y en su defecto para poder usar bootstrap es-
-necesario ejecutar el comando 鈥渘pm install bootstrap --save-dev鈥

->鈥渃omposer require symfony/debug-pack鈥 Nos va a permitir tener un mejor control y manejo de errores para asi evitar o de ser necesario tratar los bugs o fallos

->鈥減hp bin/console make:controller鈥 Creamos nuestro/s controlador/es.

->鈥渘pm install鈥 Lo mejor seria ejecutar primero este comando y luego el comando para la instalacion de bootstrap en el front.Una vez finalizamos con ambas instalaciones debemos de ejecutar el comando 鈥渘pm run dev鈥, este lo que hace es compilar el front y generar la carpeta build la cual cuenta entre muchas cosas con nuestro entrypoint.

Revisar Tambien comentarios hechos en el codigo,sobre todo en los controladores.

Es necesario prestar atencion a que cuando trabjamos en nuestro con controlador con rutas que van a requerir de un id para determinar la vista, va a sera necesario que en el redireccionamiento que va a tener cada card o cada elemento redirecconable de nuestro esqueleto mantener la siguiente sintaxis:

<a href="{{ path('NombreDeLaRuta', { id: NuestraEntidad.id }) }}" class="x"> {{ NuestraEntidad.propiedadRandom }} </a>

Lo que vaya dentro de las etiquetas de tipo 鈥渁ncla鈥 o 鈥<a>鈥 es lo que sera redireccionamiento al path marcado.

Es muy recomendable refacorizar las vistas asi no repetimos codigo y ahorramos espacio, es importante recordar que siempre las vistas principales van a extender de mi vista 鈥渂ase.html.twig鈥, por eso es necesario definir en ella el esqueleto principal que va a seguir mi pagina.

Desde los archivos presentes en mi repositorio puedo definir nuevos metodos y middlewares que me servir谩n para optimizar mis consultas y lograr renderizar aquello que quiero pero para lo cual no exixtia una funcion predefinida. En algunas ocaciones va a ser necesario que realizemos consultas sql a resultados coincidentes entre tablas, por ello voy a resumir los 3 metodos para esto:

->鈥淚NNER JOIN鈥 keyword selecciona todas las filas de ambas tablas siempre que haya una coincidencia entre las columnas. Si hay registros en la tabla "Product"
que no tienen coincidencias en 鈥淐omments鈥, 隆estos productos no se mostrar谩n!

->鈥淟EFT JOIN鈥 keyword retorna todos los registros presentes en la primera tabla(鈥渢abla de la izquierda鈥) de nuestro codigo SQL y (si los hay) todo aquellos registros que coinciden con la segunda tabla o tabla de la derecha. 隆los registros de la tabla izquierda se mostraran igual exista o no coincidencia con la tabla derecha!

->鈥淩IGHT JOIN鈥 keyword retorna todos los registros presentes en la primera tabla(鈥渢abla de la derecha鈥) de nuestro codigo SQL y (si los hay) todo aquellos registros que coinciden con la segunda tabla o tabla de la izquierda. 隆los registros de la tabla derecha se mostraran igual exista o no coincidencia con la tabla izquierda!

Siguinedo con nuestra idea de obtimizar mi aplicaci贸n llegamos finalmente a la idea de ejecutar las consultas desde nuestro/s controlador/controladores y no desde la/s vista/vistas.