强制保存已知主键
首先,对于我的英语不好表示歉意,因为我是意大利人。我写这篇文章是为了说明如何在向保存字段中插入模型的主键值时强制执行保存而不是更新。此解决方法使用 beforeSave 回调。首先在 app_model 中插入此函数
> <code><span style=”color: #000000”> <br >public function beforeSave($opt){ parent::beforeSave($opt); if(isset($opt[‘id’])&&!is_null($opt[‘id’])){ if(!isset($this->data[$this->name][$this->primaryKey])){ $this->data[$this->alias][$this->primaryKey]=$opt[‘id’]; } } return true; }
><br > 所以,当你进行保存时,请在你的代码中使用以下方法:><br > ` $this->save( array( ‘Model’=>$fields, ), array( ‘id’=>$newId ) ) ` ><br > 用字段数组替换 $fields,但不要在其中插入主键字段。用主键的已知值替换 $newId。使用 beforeSave 验证解决方法,主键将在 Cake 决定执行插入查询后设置,因为没有设置主键。因此,如果我们需要进行插入,但又想手动设置主键值,只需使用此方法即可,避免 Cake 执行更新查询。