Hola, mi duda es con la función inherit_data
de los formularios. En versiones anteriores a 2.3 esta opción se llamaba virtual
.
Tengo una entidad llamada Persona
. En ella tengo varios campos como son nombre, apellidos, teléfono, dirección de correo entre otras.
Existe la entidad Proveedor
que se relaciona con Persona
ya que un proveedor tiene contactos que son los mismos datos que personas.
También existe una entidad User
con datos básicos como nombre de usuario, email y contraseña.
Ahora bien, estoy creando una entidad Perfil
donde quiero recoger los datos de nombres, apellidos, teléfono, es decir los mismos datos que la entidad Persona
y aquí vienen mis preguntas:
- Mi duda más grande es, ¿esto funciona como una relación OneToOne entre las entidades
Persona
yPerfil
? - En mi entidad
Perfil
¿también tengo que definir las propiedades nombre, dirección, teléfono, etc, con sus Set y Get? - Si tengo que definir las mismas propiedad de la entidad Persona en la entidad Perfil. ¿Qué ventajas ofrece
inherit_data
?
De antemano les agradezco la aclaración.
Respuestas
Antes de contestar a tus preguntas, y aún no conociendo los detalles de tu aplicación, me atrevo a hacerte este comentario: creo que estás complicando demasiado las cosas. Creo que deberías tener una única entidad Usuario
que reemplace a las tres entidades relacionadas actuales: Usuario
, Persona
, Perfil
.
Respecto a tus preguntas:
- No entiendo muy bien esta pregunta. El
inherit_data
no tiene que ver con las entidades. Explicado de forma no muy técnica, elinherit_data
te permite "hacer un copia+pega automático mediante los formularios de Symfony". - Si. Desde el punto de vista de las entidades no cambia nada. Necesitas definir todas sus propiedades y todos sus getters y setters.
- La ventaja es que te ahorras definir dos veces los mismos campos en dos formularios diferentes. La idea es que, en vez de dos formularios con muchas cosas repetidas, el
inherit_data
te permite crear tres formularios: uno con las cosas comunes y los otros dos con las cosas diferentes de cada uno.
@javiereguiluz
Gracias @javiereguiluz por tu respuesta y me aclara el uso de inherit_data
y con respecto a la aplicación resulta que no todas las personas que están en la tabla Persona
son usuarios del sistema, pero si todos los usuarios del sistema deben llenar los datos de la tabla Persona
.
En la tabla persona
pueden ir datos del gerente de una empresa o de un vendedor que no son usuarios del sistema, pero se puede presentar el caso de que el vendedor se convierta en usuario de la aplicación y es ahi donde quiero usar los mismos datos que ya diligenció para crear su usuario. No se si como lo estoy haciendo sea la mejor forma, me gustaría saber tu opinión al respecto.
Gracias.
@miguelplazasr