我有以下設置:條件相關記錄刪除在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
?
在此先感謝。