3

と の 2 つのエンティティがBackgroundありActionます。aBackgroundには多くの がありActionsます。

を削除すると、外部キーをnullに保ちBackgroundたいと思います。制約を満たす方法でエンティティを効果的に孤立させる。cascade={"remove"}orphanRemovalに関する非常に多くの記事と質問を読みましたが、これらはすべて、孤立したアクションを削除する (私が望んでいることではありません) か、何もしないようです - その結果、整合性制約違反が発生します。 .Action

SQLSTATE[23000]: Integrity constraint violation: 
1451 Cannot delete or update a parent row: 
a foreign key constraint fails (`Action`, CONSTRAINT
`FK_B7722E25C93D69EA` FOREIGN KEY (`background_id`) 
REFERENCES `Background` (`id`)) 

今のところ、私が見つけた解決策は、関連するアクションを反復処理し、フィールドを null にして永続化することでした。これは最善の方法とは言えません。

foreach ($background->getActions() as $action) {
  $action->setBackground(null);
}
4

1 に答える 1