我正在阅读Doctrine 2 Docs>活动>预删除。
每个人都会调用
preRemove
个事件 实体何时传递给EntityManager#remove()
方法。它是 所有协会都是级联的 标记为级联删除。对什么没有限制 方法可以在里面调用
preRemove
事件,除非是 删除方法本身在调用期间 冲洗操作。
我正在尝试处理相关实体的情况。
例如。用户可以......
所以我想处理preRemove所有这些关系。所以我做了类似
的事情/**
* @PreRemove
*/
protected function onPreRemove() {
foreach ($this->projects as $proj) {
$proj->collaborators->remove($this);
}
foreach ($this->ownedTodoLists as $todoList) {
$todoList->owner = $todoList->project->owner;
}
foreach ($this->ownedTodos as $todo) {
$todo->owner = $todo->todoList->owner;
}
foreach ($this->assignedTodos as $todo) {
$todo->assigned = $todo->todoList->owner;
}
}
但我想是否为每个标记为级联删除的关联调用此函数(preRemove
),如果我的Todo,TodoList,Links标记为级联删除,则此函数调用不适合它们?它会浪费资源甚至抛出错误吗?当{Todo}在它们上面运行时,{T <1}会引用这些实体吗?那么如何处理这些关系呢?
或者我可能没有标记实体级联,但是使用这些函数来手动级联删除?
答案 0 :(得分:0)
在处理特殊逻辑时(如在您提供的代码段中),我认为这对于@preRemove事件挂钩来说是一个非常典型的用法。我不会对任何列使用内部级联。