我有一个父模型"项目",它有很多"风险" 当我更新(添加/编辑/删除)风险时,我还想更新父项目的"已更新"字段。
这有效(在风险控制器中):
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触发器,但这并不比这个容易。