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,则仅保存更改。为仅在记录删除前受影响的内容添加字段似乎是浪费,但就我而言,它可以正常工作。我认为一个“真正的解决方案”将包括,避免链式回调的需要