26

Estoy utilizando Doctrine 1.2 en un proyecto de Symfony, y estoy considerando mezclar tipos de herencia de agregación de columnas y concretas en mi esquema: agregación de columna me permite consultar en una tabla primaria y obtener los registros padre e hijo, mientras que la herencia concreta me permite obtener un esquema más limpio. Además, la mezcla estará en la misma cadena de herencia. ¿Cómo escribiría el archivo de esquema? Como el siguiente?Diferentes tipos de herencia en el mismo esquema

A: 

B: 
    inheritance: 
    extends: A 
    type: concrete 

C: 
    inheritance: 
    extends: B 
    type: column_aggregation 
    keyField:   type 
    keyValue:   1 

O como esto quizá:

A: 

B: 
    inheritance: 
    extends: A 
    type: concrete 

C: 
    inheritance: 
    extends: B 
    type: concrete 
D: 
    inheritance: 
    extends: C 
    type: column_aggregation 
    keyField:   type 
    keyValue:   1 


E: 
    inheritance: 
    extends: C 
    type: column_aggregation 
    keyField:   type 
    keyValue:   2 

¿Hay peligros/advertencias?

+0

Parece nadie más tiene experiencia para compartir. Me interesaría saber cómo pasó esto, mi primer pensamiento fue que no funcionaría bien. – benlumley

+0

@benlumley Bueno, lo hemos intentado, y estamos probando, y parece funcionar bastante bien por el momento. Editaré mi publicación y agregaré un comentario si encontramos algunos problemas. Probamos con la segunda versión del esquema. – greg0ire

+0

@ greg0ire: CUIDADO con las relaciones cuando se trata de una herencia concreta :-) Asegúrese de no definirlas en la tabla base. Nunca intenté mezclarme ni coincidir en modo alguno, ya sea que sea necesario escuchar cualquier problema que encuentres ... – prodigitalson

Respuesta

1

Mientras evitar herencia circular o de diamante herencia forma que estaría bien y puede utilizar esta

Un circular herencia (obviamente se ve de la siguiente manera

Clase A se extiende B Clase B se extiende un

O

CLASE A se extiende C

CLASE B se extiende un

CLASE C extiende una

A Diamond herencia conformado es un poco más alrededor. Esto ocurre cuando el siguiente tipo de condición ocurre

CLASE A

CLASE B se extiende un

CLASE C extiende una

CLASE D EXTIENDE B, C

+0

¿Estás diciendo que la herencia múltiple es posible con la doctrina? Dado que no es con php, lo dudo ... +1 por el vocabulario aunque – greg0ire

+0

Todo lo que estoy tratando de decir es mientras estas restricciones no estén ahí. Podemos hacer herencia de forma segura. – footy

Cuestiones relacionadas