2011-08-30 55 views
3

我在哪里,在一个模型的afterSave回调,我想从一个遥远的关联访问数据的情况下(这是一个非常靠不住协会联动遗留数据模型)。我发现的是,在回调中,我可以在模型上执行查找调用,但如果我正确退出,那么记录不会插入到数据库中。缺少记录意味着我无法使用刚才插入到当前数据的相关模型执行查找。CakePHP的afterSave定时

我还没有发现,当数据实际上是相对于致力于当afterSave回调是从事于任何提及。我正在使用遗留代码,但我没有看到任何迹象表明我们正在专门进行交易,所以我试图弄清楚我的选择可能是什么。

谢谢。

UPDATE

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

的传统模式使我在登记时不直接依赖于一个日期,所以我不能让Date.id容易的地方。相反,Registration->Registrant->Ticket->Date。我知道不直观,但现在是这样。即使更好(嘲讽在内),我们有一个观点叫attendees该卷的所有这些信息并从中我将能够使用新创建的Registration->id返回Attendee.date_id。由于记录不存在,因此在视图中不可用。

希望提供多一点的上下文。

回答

0

什么是查找查询的目的,你afterSave里面?

更新

是它在所有可能的正确记录相关联?或者我们在谈论太多的重构方式是值得的吗?如果无法修改记录之间的关联,则可以将支票移动到控制器。

喜欢的东西(在伪代码)

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

这不是最好的做法,但它会让你在你的问题。

+0

我已经用一些背景故事更新了这个问题。也许这将有助于回答你的问题。 –

+0

更新了我的答案 –

+0

这个应用程序遍布各处。我试图从视图和各种其他有趣的东西中讨论数据操作。重新构建模式和所有现有数据不会发生。我有一个糟糕的解决方案,但我正在寻找体面的选择,似乎缺少的数据库记录是一个很好的开始。这是我可以诚实地说我在'afterSave'中没有想到的一件事。 –