Symfonyの備品と継承
-
28-09-2019 - |
質問
私はこのような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を挿入すると、エラーが発生します。
所属していません StackOverflow