更新子项 add/save 的父项记录

Update parent record on add/save of child

我有一个父模型,"Project" 有许多 "Risks" 当我更新 (add/edit/delete) 风险时,我还想更新父项目的更新字段。

这有效(在 RisksController 中):

if ($this->Risk->save($this->request->data)) {
    $this->loadModel('Project');
    $project = $this->Project->findById($this->request->data['Risk']['project_id']);
    $this->Project->id = $project['Project']['id'];
    $this->Project->saveField('Updated', time());
...

但必须有更简单的方法。

更简洁的方法是使用 afterSave 回调。

它与您的代码几乎相同(我认为您应该 App::uses 而不是 loadModel)

另一种方法是 mysql 触发器,但这并不比这个更容易。

您可以为此使用 $this->Risk->saveAssociated($this->request-data)

http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-saveassociated-array-data-null-array-options-array