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ÇÃO alumno__beca_persona_id_alumno_idChave estrangeira (persona_id) REFERÊNCIAS alumno (id) Em excluir cascata)

Alguém sabe como escrever um jogo para uma tabela herdada de outra?

Obrigado!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top