我有两个实体 -Background
和Action
. 一个Background
有很多Actions
。
当我删除 aBackground
我想保留Action
但为空的外键。以满足约束的方式有效地孤立实体。我已经阅读了很多关于cascade={"remove"}和orphanRemoval的文章和问题,但所有这些似乎都会导致删除孤立的动作(根本不是我想要的)或什么都不做——这会导致违反完整性约束.
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`))
目前,我找到的解决方案是遍历相关的 Actions 并将该字段设为 null 并持续存在。这不可能是最好的前进方式。
foreach ($background->getActions() as $action) {
$action->setBackground(null);
}