Paarungen und Vererbung in Symfony
-
28-09-2019 - |
Frage
Ich habe eine Datenbank-Schema in Symfony wie folgt aus:
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) }
Wie Sie sehen, „alumno“ hat ein konkretes Erbe von „Persona“. Jetzt versuche ich, Armaturen für die beiden Tabellen zu erstellen, und ich kann nicht Lehre sie laden machen. Es gibt mir diese Fehlermeldung:
SQLSTATE [23000]: Integritäts-Constraint Verletzung: 1452 Kann nicht hinzufügen oder aktualisieren ein Kind Reihe: ein Fremdschlüssel fehlschlägt (
eat/alumno__beca
, CONSTRAINTalumno__beca_persona_id_alumno_id
FOREIGN KEY (persona_id
) LITERATURalumno
(id
) ON DELETE CASCADE)
Hat jemand wissen, wie eine Halterung für eine Tabelle von einem anderen geerbt zu schreiben?
Danke!
Lösung
Ich bin mir nicht sicher, ob dies das einzige Problem, aber beim Laden Vorrichtungen für Tabellen, die Beziehungen haben, laden Sie sie einzeln in einer Reihenfolge, die nicht ihre Fremdschlüsselbedingungen verstoßen: erster Elternteil, dann Kind ... nicht alles zusammen. Ein Kind Datensatz kann nicht „legal“ exist, ohne seine Eltern, wenn Sie Ihre Beziehungen auf diese Weise definiert haben, oder aber die Einschränkung nicht.
Andere Tipps
Ich begann symfony in den letzten Wochen und ich habe Problem heute mit diesen ..
erstes Problem ist, Ihre Fremdschlüssel sein integer müssen. nicht integer (3) .. sollten keine Felder Größe schreiben, wenn es ein Fremdschlüssel ist. Und auch der Code korrekt ist, dies ist nur eine Info.
zweites Problem ist, Sie sollten sicherstellen, dass Fremdschlüsselindizes auf Ihrer Datenbanktabelle entfernen. wenn es bereits erstellt wird, beim Einfügen-SQL wieder einen Fehler gibt.