CakePHP afterSave Timing

时间:2011-08-30 15:47:03

标签: cakephp cakephp-1.2

我的情况是,在模型的afterSave回调中,我正在尝试从远程关联访问数据(它是具有非常不稳定的关联链接的遗留数据模型)。我发现在回调中我可以在模型上执行查找调用,但如果我向右退出,则记录永远不会插入到数据库中。缺少记录意味着我无法使用刚插入当前数据的相关模型执行查找。

我还没有发现任何关于何时实施afterSave回调的实际数据的提及。我正在使用遗留代码,但我没有看到任何迹象表明我们专门处理交易,所以我想弄清楚我的选择可能是什么。

感谢。

更新

方案的要点是:我们正在进行事件注册,但是人们可以等待列出。用户可以注册(或注册)给定的Date。注册完成后,我需要在注册日期(WaitList.user_id)上检查等待列表中注册用户(WaitList.date_id)是否存在记录。如果存在这样的记录,则可以将其删除,因为它已成为主动注册。

旧版架构将我置于注册与日期无直接关系的位置,因此我无法轻松获得Date.id。相反,Registration->Registrant->Ticket->Date。我知道,不直观,但它现在就是这样。即使更好(包含讽刺),我们也有一个名为attendees的视图,可以将所有这些信息都滚动起来,然后我可以使用新创建的Registration->id返回Attendee.date_id。由于记录不存在,因此在视图中不可用。

希望这能提供更多的背景。

1 个答案:

答案 0 :(得分:0)

在afterSave中查找查询的目的是什么?

<强>更新

是否可以正确关联记录?或者我们是否正在谈论过多的重构以使其值得?如果无法修改记录之间的关联,您可以将支票移至控制器。

类似(在伪代码中)

if (save->isSuccessful) {
    if (onWaitList) {
        // delete record
    }
}

这不是最佳做法,但它可以帮助您解决问题。