Recordemos brevemente el proyecto, siempre es importante tenerlo fresco, más aún en esta etapa donde definiremos la columna vertebral de la aplicación: el modelo de datos.
Se trata de una bolsa de empleo donde empresas pueden publicar ofertas y usuarios que están en búsqueda de trabajo pueden postularse a ellas.
El modelo de datos
Como en cualquier aplicación de mediana complejidad, es importante dedicar un espacio especial a analizar cómo vamos a almacenar la información.
En nuestro caso, tratándose de un sistema transaccional, es bastante claro que un modelo relacional será lo más adecuado.
En esta clase no abordaré detalles de implementación (como qué motor de bases datos utilizaremos) y lo haré así a propósito, para concentrar la atención a definir, de la mejor manera que podamos, cuáles son las entidades que intervienen y cómo se relacionan entre sí.
Comencemos.
Las entidades
De la propia definición del problema emanan naturalmente las siguientes entidades:
Empresa
Postulante
Oferta
Viéndolo en forma de Diagrama de Entidad-Relación obtendremos algo como:
Aquí vemos que:
Una empresa puede publicar muchas ofertas.
Muchos postulantes pueden postularse a una oferta dada
Cada oferta puede recibir múltiples postulaciones.
Seguramente a medida que avancemos nuestro modelo se volverá más complejo, por el momento es suficiente con esta primera versión.
Implementación
Si tuvieras que codear esto en php, ¿cómo lo harías?
Seguramente recurrirías a un modelo de clases, ¿cierto?
Bien. Se va pareciendo un poco más a algo útil, ¿o no?
Lo mismo habría que hacer con las demás clases… pero hay un par de detalles que estamos dejando un poco de lado… ¿Cómo se van a llenar estos datos?, ¿Cómo vamos a manejar la persistencia?
Y aquí es donde las cosas empiezan a ponerse cuesta arriba, ¿o no? :)
Si tuviésemos (¡o quisiésemos!) hacer todo esto por nuestra cuenta ciertamente tendríamos un arduo trabajo por delante.
Claro que si quisiéramos encararlo de ese modo no estaríamos estudiando Symfony :)
Una parte super importante de un framework fullstack es un componente conocido como ORM (Object Relational Mapper).
Se trata de una serie de clases que permiten interactuar con una base de datos relacional de un modo simple y orientado a objetos.
En PHP existen varios ORMs (entre ellos Eloquent, Propel o ReadBean), sin embargo, por lejos, el más utilizado junto a Symfony es Doctrine y es precisamente el que utilizaremos en este curso.
A través de Doctrine podremos:
Generar código en forma automática
Definir la relación entre nuestras entidades sin salirnos del código en ningún momento
Mantener nuestra base de datos sincronizada con la definición de nuestras clases
Todos estos detalles los veremos más adelante en el curso pero primero lo primero: ¡a montar un entorno de trabajo donde podamos desarrollar con comodidad!
Acompáñame a la siguiente clase donde te enseñaré a usar un entorno virtualizado para programar a gusto. ;)
Para los graficos del modelo de datos, recomiendo que usen Draw.io, es mucho mejor ademas no tiene esa marca de agua qeu estorba un poquito para leer la grafica, excelentee por est contenido
Igual se puede instalar la extensión en VScode y trabajar todo desde ahí es más cómodo... saludos
He estado mirando y si que parecen muy diferentes....
Solo he trabajado con Eloquent, vamos a ver como va Doctrine
Uhhh, a mi me gusta Eloquent, me parece muy intuitivo, vamos a mirar Doctrine, el nombre es llamativo jaja
Totalmente de acuerdo
He trabajado un poco tanto con Doctrine como con Eloquent. Eloquent es funcional y tiene un sintaxis muy resumida. Pero en mi opinión Doctrine es más poderoso. Además de que implementa de forma natural un MVC puro, desacoplando el acceso a datos del modelo, que con Eloquent el acceso a datos está acoplado en el modelo.
Todo pinta de lujo, me gusta esta metodología
Ahora empieza a tomar mas sentido.
No sé si la segunda clase estaba mal "puesta" o en realidad el curso es así, porque ahora comienzo a comprender desde la tercera clase, me da la impresión que la clase 2 iba más adelante y el profe se equivocó... bueno seguimos en la ruta.. animo a todos
Genial a usar ORM y adios a los Store procedure xd
Yo nunca he usado esté framework aver que tal me va
Continuemos :) 👍
Que emoción estaba esperando este curso desde hace mucho tiempo
Este framework me interesa.
Excelente. pero seria mejor con videotutorial
Ganas de ver como es Doctrine, sera mejor o peor que Eloquent?
He trabajado con Eloquent, supongo que Doctrine debe ser similar.
Una forma diferente de tomar un curso, es bueno siempre conocer nuevas maneras