Question

J'ai un schéma de base de données dans Symfony comme ceci:

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) }

Comme vous le voyez, "alumno" a un héritage concret de "persona". Maintenant, je suis en train de créer des accessoires pour ces deux tables, et je ne peux pas la doctrine de les charger. Il me donne cette erreur:

  

SQLSTATE [23000]: contrainte d'intégrité   violation: 1452 Impossible d'ajouter ou mettre à jour un   ligne enfant: une contrainte de clé étrangère   échoue (eat/alumno__beca, CONTRAINTE   alumno__beca_persona_id_alumno_id   FOREIGN KEY (persona_id) RÉFÉRENCES   alumno (id) CASCADE ON SUPPRIMER)

Est-ce que quelqu'un sait comment écrire un appareil pour une table héritée d'une autre?

Merci!

Était-ce utile?

La solution

Je ne sais pas si cela est votre seul problème, mais quand les appareils de chargement pour les tables qui ont des relations, chargez-les individuellement dans un ordre qui ne viole pas les contraintes de clé étrangère: premier parent, enfant ... pas tout ensemble. Un enregistrement enfant ne peut pas « légalement » exister sans son parent, si vous avez défini vos relations de cette façon, ou bien la contrainte échoue.

Autres conseils

J'ai commencé symfony dernières semaines et j'ai problème aujourd'hui avec ces ..

premier problème est, vos clés étrangères doit être un entier. pas entier (3) .. ne doit pas écrire la taille des champs si elle est une clé étrangère. Et votre code est correct, c'est juste une info.

deuxième problème est, vous devez supprimer que les index de clé étrangère sur votre table de base de données. si elle est déjà créé, lorsque vous insérez-sql encore, il donne une erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top