Impossible de supprimer ou de mettre à jour une ligne parent: une contrainte de clé étrangère échoue.
class Teacher {
/**
*@ORM\OneToMany(targetEntity="publication", mappedBy="teacher")
*/
protected $publications;
}
class Publication {
/**
* @ORM\ManyToOne(targetEntity="Teacher", inversedBy="publications")
* @ORM\JoinColumn(name="teacher_id", referencedColumnName="id")
*/
protected $teacher;
}
Ce que je veux, c'est faire en sorte que lorsque vous supprimez un enseignant, l'id_teacher est modifié en NULL. Je veux garder la publication mais sans référence au professeur.
Je ne sais pas comment faire ça dans Doctrine, est-ce possible? Ou toujours la relation doit être avec un enseignant?
Vous devez ajouter l'option onDelete="SET NULL"
dans l'annotation de votre entité Publication comme ceci:
class Publication
{
/**
* @ORM\ManyToOne(targetEntity="Teacher", inversedBy="publications")
* @ORM\JoinColumn(name="teacher_id", referencedColumnName="id", onDelete="SET NULL")
*/
protected $teacher;
}
À votre santé!