【发布时间】:2013-05-26 17:22:12
【问题描述】:
让我们假设以下情况:
- A 属于 B,C
- B 有很多 A
- C hasMany A
- A 有字段数量
- B 有字段 total_quantity
B 中的总数量将 A 中所有相关单个记录的所有单个数量相加。
我有 ModelC/edit,用户可以在其中添加/删除/修改 A。
每次追加、修改或删除 A 中的记录时,我都想更新 B.total_quantity。
基本上,我有 3 种可能进行更新:
- 在 ModelCController 中手动
- 在 ModelA.AfterSave 中
- 在数据库中有触发器
我的第一个选择是解决方案 2,但我发现了问题,所以我需要帮助。
在 ModelA.AfterSave 我只有新的、修改过的数据。我怎么知道 A.quantity 是否已更改?没有 $this->old['ModelA'] 或类似的东西。即使我能知道这些信息,我也无权访问 ModelB,因为没有 $this->data['ModelB']...
有人可以帮忙吗?
【问题讨论】:
-
您听说过用于 CakePHP 模型的 counterCache 功能吗?见book.cakephp.org/2.0/en/models/…
-
@JustinT。 counterCache 不会对字段求和
标签: cakephp