Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Cambiar clave primaria de una entidad relacionada

29 de noviembre de 2015

Buenos días,

Tengo un problema y no sé cómo solucionarlo. Tengo dos entidades:

Entidad Certificado Con un ArrayCollection de FileCertificado

/**
 * @ORM\OneToMany(targetEntity="FileCertificado", mappedBy="certificado", cascade={"persist"}, orphanRemoval=true)
 */
 private $files;

Entidad FileCertificado

/**
 * @ORM\ManyToOne(targetEntity="Lider\AdminBundle\Entity\Certificado", inversedBy="files")
 * @ORM\JoinColumn(name="certificado_id", referencedColumnName="codigo")
 */
 private $certificado;

La entidad Certificado posee una clave primaria llamada codigo, con la que se relacionado con los FileCertificado. Y necesito poder cambiar la clave primaria (por si se hubiesen equivocado al poner el código del certificado). El problema viene que cuando lo hago me saca el siguiente error en la relación:

SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row:
a foreign key constraint fails (`db506989755`.`filecertificado`, CONSTRAINT `FK_51280ACB967F481B` 
FOREIGN KEY (`certificado_id`) REFERENCES `certificado` (`codigo`))

¿Cómo puedo hacer para solventarlo?

Muchas gracias, un saludo.


Respuestas

#1

Personalmente no se cómo solucionar este problema. Eso sí, tengo clara cuál sería mi recomendación: actualiza tu entidad para usar una clave primaria "normal" (el típico id) y deja el código como una propiedad normal. Quizás estoy equivocado, pero usar como clave primaria una propiedad cuyo valor puede modificar el usuario final en cualquier momento, me parece peligroso.

@javiereguiluz

1 diciembre 2015, 12:38