更新有关添加/保存子项的父记录



我有一个父模型"项目",它有很多"风险" 当我更新(添加/编辑/删除)风险时,我还想更新父项目的"已更新"字段。

这有效(在风险控制器中):

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());
...

但必须有一种更简单的方法。

您可以使用

$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

一个更干净的方法是使用 afterSave 回调。

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

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

最新更新