我有以下设置:条件相关记录删除在afterDelete()
型号:
Team
Task
Change
TasksTeam
TasksTeam
是hasManyThrough,该团队的任务相关联。 Change
用于记录任务细节的变化,包括团队被连接/分离时(即通过TasksTeam
中的记录)。
TasksTeam
也级联删除Task
。如果任务被删除,所有相关的团队关联也应该被删除。
当一个TasksTeam
被删除,这意味着一个团队已经离开了一个任务,我想为此记录一个Change
。我正在使用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
正确。但是,即使任务被删除,也会记录更改。从另一个答案在SO类似的东西,我想原因是,当它击中回调Model:del()
之前调用,这意味着任务尚未被删除TasksTeam
afterDelete()
问题
我怎样才能只有在任务未被删除的情况下才能成功保存Change
?
在此先感谢。