Acessórios e herança em simfonia
-
28-09-2019 - |
Pergunta
Eu tenho um esquema de banco de dados em Symfony como este:
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) }
Como você vê, "Alumno" tem uma herança concreta de "Persona". Agora estou tentando criar acessórios para essas duas tabelas e não posso fazer a doutrina para carregá -las. Isso me dá este erro:
SQLSTATE [23000]: Violação de restrição de integridade: 1452 não pode adicionar ou atualizar uma linha infantil: uma restrição de chave estrangeira falha (
eat/alumno__beca
, RESTRIÇÃOalumno__beca_persona_id_alumno_id
Chave estrangeira (persona_id
) REFERÊNCIASalumno
(id
) Em excluir cascata)
Alguém sabe como escrever um jogo para uma tabela herdada de outra?
Obrigado!
Solução
Não tenho certeza se esse é o seu único problema, mas ao carregar acessórios para tabelas que têm relacionamentos, carregue -os individualmente em uma ordem que não viola suas restrições de chave estrangeira: primeiro pai, então filho ... nem tudo juntos. Um registro infantil não pode "legalmente" existir sem os pais, se você definiu seus relacionamentos dessa maneira, ou então a restrição falha.
Outras dicas
Comecei o Symfony nas últimas semanas e tenho problemas hoje com isso ..
O primeiro problema é que suas chaves estrangeiras devem ser inteiras. não inteiro (3) .. não deve escrever o tamanho dos campos se for uma chave estrangeira. E também seu código está correto, isso é apenas uma informação.
O segundo problema é que você deve remover esses índices de chave estrangeira na sua tabela de banco de dados. Se já estiver criado, quando você inserir-se-sql novamente, ele dá um erro.