Accesorios y herencia en Symfony
-
28-09-2019 - |
Pregunta
Tengo un esquema de base de datos en Symfony como esto:
Persona:
actAs: { Timestampable: ~ }
columns:
primer_nombre: { type: string(255), notnull: true }
segundo_nombre: { type: string(255) }
apellido: { type: string(255), notnull: true }
rut: { type: string(255) }
email: { type: string(255) }
email2: { type: string(255) }
direccion: { type: string(400) }
ciudad: { type: string(255) }
region: { type: string(255) }
pais: { type: string(255) }
telefono: { type: string(255) }
telefono2: { type: string(255) }
fecha_nacimiento: { type: date }
Alumno:
inheritance:
type: concrete
extends: Persona
columns:
comentario: { type: string(255) }
estado_pago: { type: string(255) }
Alumno_Beca:
columns:
persona_id: { type: integer, primary: true }
beca_id: { type: integer, primary: true }
relations:
Alumno: { onDelete: CASCADE, local: persona_id, foreign: id }
Beca: { onDelete: CASCADE, local: beca_id, foreign: id }
Beca:
columns:
nombre: { type: string(255) }
monto: { type: double }
porcentaje: { type: double }
descripcion: { type: string(5000) }
Como se ve, "alumno" tiene una herencia concreta de "persona". Ahora estoy tratando de crear accesorios para estas dos tablas, y no puedo hacer Doctrina para cargarlos. Me da este error:
SQLSTATE [23000]: restricción de integridad violación: 1452 No se puede agregar o actualizar una fila secundaria: una restricción de clave externa falla (
eat/alumno__beca
, CONSTREÑIMIENTOalumno__beca_persona_id_alumno_id
FOREIGN KEY (persona_id
) REFERENCIASalumno
(id
) ON CASCADE DELETE)
¿Alguien sabe cómo escribir un accesorio para una mesa heredado de otra?
Gracias!
Solución
No estoy seguro de si este es su único problema, pero cuando los accesorios de carga para tablas que tienen relaciones, las cargan individualmente en un orden que no viola sus restricciones de clave externa: primer padre, entonces ... no todo niño juntos. Un registro hijo no puede "legalmente" existir sin su padre, si usted ha definido sus relaciones de esta manera, o de lo contrario no cumple con la restricción.
Otros consejos
Symfony comenzado en las últimas semanas y tengo un problema hoy en día con estos ..
primer problema es que sus claves externas debe ser un número entero. no entero (3) .. No se debe escribir el tamaño de los campos si es una clave externa. Y también el código es correcto, esto es sólo una información.
segundo problema es, debe quitar que los índices de clave externa en la tabla de base de datos. si ya se ha creado, al insertar-SQL de nuevo da un error.