Cakephp afterDelete()中的条件关联记录删除

Cakephp afterDelete()中的条件关联记录删除,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,我有以下设置: 型号: Team Task Change TasksTeam TasksTeam是一种hasManyThrough,将团队与任务关联起来更改用于记录任务详细信息中的更改,包括团队连接/分离时的更改(即通过TasksTeam中的记录) TasksTeam还级联删除Task。如果删除了任务,则还应删除所有相关的团队关联 当一个TasksTeam被删除时,意味着一个团队已经离开了一个任务,我想为此记录一个更改。我正在使用TasksTeam afterDelete()记录团队离开的情况

我有以下设置:

型号:

Team
Task
Change
TasksTeam
TasksTeam
是一种hasManyThrough,将团队与任务关联起来<代码>更改用于记录任务详细信息中的更改,包括团队连接/分离时的更改(即通过
TasksTeam
中的记录)

TasksTeam
还级联删除
Task
。如果删除了任务,则还应删除所有相关的团队关联

当一个
TasksTeam
被删除时,意味着一个团队已经离开了一个任务,我想为此记录一个
更改。我正在使用
TasksTeam afterDelete()
记录团队离开的情况。在
TasksTeam beforeDelete
中,我将数据保存到
$this->predelete
中,以便在
afterDelete()中可用

以下是
TasksTeam
中的非工作代码:

public function afterDelete(){
    $team_id = $this->predelete['TasksTeam']['team_id'];
    $task_role_id = $this->predelete['TasksTeam']['task_role_id'];
    $task_id = $this->predelete['TasksTeam']['task_id'];

    // Wanted: only record a change if the task isn't deleted
    if($this->Task->exists($task_id)){
        $this->Task->Change->removeTeamFromTask($task_id, $team_id, $task_role_id);    
    }    
    return true;
}
问题:

删除任务时,删除操作将正确地级联到
TasksTeam
。但是,即使任务被删除,也会记录更改。从对类似问题的另一个回答来看,我认为原因是回调是在
Model:del()
之前调用的,这意味着当任务点击
TasksTeam
afterDelete()

问题

只有在未删除任务的情况下,如何才能成功保存
更改


提前感谢。

如果回调是在实际删除之前调用的,我会看到维护一个以任务ID为键的标志关联数组,或者一组任务ID,它们是在
任务
上调用
后删除
时添加的。然后您可以在
任务
中创建一个方法,例如
isDeleting
或类似方法,用于查询数组,告诉您任务是否正在被删除。

根据@James Dunne的建议,我在
任务
模型中添加了一个tinyint字段,名为
已被删除
,只需在
任务
删除前()中将该布尔值设置为true即可。然后检查此标志,如果标志为布尔值false,则仅保存
更改。为仅在记录删除前受影响的内容添加字段似乎是浪费,但就我而言,它可以正常工作。我认为一个“真正的解决方案”将包括,避免链式回调的需要