質問

私はこのようなSymfonyにデータベーススキーマを持っています:

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

ご覧のとおり、「卒業生」には「ペルソナ」からの具体的な継承があります。今、私はこの2つのテーブルの備品を作成しようとしていますが、それらをロードするための教義を作ることはできません。これは私にこのエラーを与えます:

SQLSTATE [23000]:整合性の制約違反:1452は、子の行を追加または更新できません:外部キー制約が失敗します(eat/alumno__beca, 、制約 alumno__beca_persona_id_alumno_id外部キー (persona_id)参照 alumno (id)カスケードを削除する場合)

誰かが他の人から継承されたテーブルのフィクスチャを書く方法を知っていますか?

ありがとう!

役に立ちましたか?

解決

これがあなたの唯一の問題であるかどうかはわかりませんが、関係のあるテーブルにフィクスチャーをロードする場合、外部のキーの制約に違反しない順序で個別にロードします。子の記録は、親なしでは「合法的に」存在することはできません。この方法で関係を定義している場合、または制約が失敗します。

他のヒント

私は先週、Symfonyを始めましたが、今日はこれらに問題があります。

最初の問題は、外国の鍵が整数でなければならないことです。整数ではありません(3)..それが外部キーである場合、フィールドサイズを書き込むべきではありません。また、コードは正しいです、これは単なる情報です。

2番目の問題は、データベーステーブルの外部キーインデックスを削除する必要があることです。既に作成されている場合、再びSQLを挿入すると、エラーが発生します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top