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.