Symfony'de Fikstür ve miras

2 Cevap php

Böyle Symfony'de bir veritabanı şema var:

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

Gördüğünüz gibi, "alumno" "persona" somut bir miras vardır. Şimdi bu iki tablo için fikstür oluşturmak için çalışıyorum, ve ben Doktrin bunları yüklemek için yapamazsınız. Bana bu hata veriyor:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (eat/alumno__beca, CONSTRAINT alumno__beca_persona_id_alumno_id FOREIGN KEY (persona_id) REFERENCES alumno (id) ON DELETE CASCADE)

Birisi diğerinden miras bir tablo için bir fikstür yazmak nasıl biliyor mu?

Teşekkürler!

2 Cevap

Ben bu tek sorun olup olmadığından emin değilim, ama ilişkiler tablolar için fikstür yüklerken, yabancı anahtar kısıtlamalarını ihlal etmeyen bir sırayla bunları tek tek yükleyin: Birlikte ilk ebeveyn, sonra çocuk ... her şey değil. Eğer bu şekilde ilişkileri tanımlanmış olan, ya da başka kısıtlama başarısız olursa bir çocuk rekor "yasal", onun üst olmadan var olamaz.

Geçen hafta içinde Symfony başladı ve ben bu bugün sorun var ..

İlk sorun, yabancı anahtarları tamsayı olmalıdır, olduğunu. değil tamsayı (3) .. Bir yabancı anahtarı ise alanların boyutu yazmak gerekir. Ve ayrıca kodu bu sadece bir bilgi olduğunu, doğru olduğunu.

second problem is, you should remove that foreign key indexes on your database table. if it is already created, when you insert-sql again it gives an error.