J'ai deux entités avec une relation unidirectionnelle unique: lorsque j'essaie de supprimer une sous-barre, je reçois cette erreur: P> Violation de la contrainte d'intégrité: 1451 Impossible de supprimer ou de mettre à jour une ligne de parent: une contrainte de clé étrangère échoue p>
blockQuote> Comment conserver une relation unidirectionnelle sans perdre la capacité de supprimer des entités de barres? p> p>
3 Réponses :
Configurez votre clé étrangère sur Suppr Cascade (cela supprimera FOO Records aussi) ou définir NULL (cela définit la colonne sur NULL lorsque vous supprimez la barre) P>
http: //dev.mysql. COM / DOC / REFMAN / 5.5 / FR / INNODB-CHARGE-KEY-CONTRAINTS.HTML P>
avec la doctrine 2, c'est ce que vous devez faire:
class Foo {
...
/**
* @OneToOne(targetEntity="Bar")
* @JoinColumn(name="bar_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $bar;
...
}
class Bar {
...
}
Vous pouvez utiliser le Élimination orpheline . Ça fonctionne avec Vous avez juste à Ajoutez l'option espère que cela pourrait aider quelqu'un. p> p> un-one-one code>, un-to-plusieurs code> et nombre-à-plusieurs code> associations. orphanremoval = true code> comme suit: p>
Orphanremoval = True ne fonctionne pas lorsque vous essayez de supprimer une entité
Orphanremoval fonctionne si vous parvenez à supprimer la barre, alors foo sera supprimé par la doctrine depuis son orphelin.