Symfony2:删除时断开关联
Symfony2: Disconnect Associations on delete
我有两个实体 - Background
和 Action
。
一个 Background
有很多 Actions
.
当我删除 Background
时,我想 保留 Action
但 null 外键。以满足约束的方式有效地孤立实体。
我已经阅读了很多关于 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`))
目前,我找到的解决方案是遍历相关的 Actions 并使该字段为空并持续存在。这不可能是最好的前进方式。
foreach ($background->getActions() as $action) {
$action->setBackground(null);
}
您可以使用可以使引用无效的删除行为原则来实现此目的。
这是我如何在旧的 sf2.3 项目中实现它的示例:
/**
* Workaround for circular reference:
*
*/
/**
* @ORM\OneToOne(targetEntity="Acme\DashboardBundle\Entity\AlternativeProposal")
* @ORM\JoinColumn(name="selected_alternative_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
*/
protected $selectedAlternative;
希望对您有所帮助
我有两个实体 - Background
和 Action
。
一个 Background
有很多 Actions
.
当我删除 Background
时,我想 保留 Action
但 null 外键。以满足约束的方式有效地孤立实体。
我已经阅读了很多关于 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`))
目前,我找到的解决方案是遍历相关的 Actions 并使该字段为空并持续存在。这不可能是最好的前进方式。
foreach ($background->getActions() as $action) {
$action->setBackground(null);
}
您可以使用可以使引用无效的删除行为原则来实现此目的。
这是我如何在旧的 sf2.3 项目中实现它的示例:
/**
* Workaround for circular reference:
*
*/
/**
* @ORM\OneToOne(targetEntity="Acme\DashboardBundle\Entity\AlternativeProposal")
* @ORM\JoinColumn(name="selected_alternative_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
*/
protected $selectedAlternative;
希望对您有所帮助