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, CONSTRAINT   alumno__beca_persona_id_alumno_id   FOREIGN KEY (persona_id) LITERATUR   alumno (id) ON DELETE CASCADE)

Hat jemand wissen, wie eine Halterung für eine Tabelle von einem anderen geerbt zu schreiben?

Danke!

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top