У меня есть две сущности - Background
и Action
. у Background
много Actions
.
Когда я удаляю Background
, я хочу сохранить 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`))
На данный момент решение, которое я нашел, состояло в том, чтобы перебирать связанные действия, обнулять поле и сохранять. Это не лучший путь вперед.
foreach ($background->getActions() as $action) {
$action->setBackground(null);
}