强制保存带插入主键值
您是否尝试过在手动设置主键值时进行保存?> 默认情况下,Cakephp 会执行一个更新查询,当在 fields 数组中设置了主键值时。<br > 如果我们有一个数据库表,其中主键不是 AI,而是由算法生成的,我们需要强制 Cakephp 执行一个插入查询而不是更新,这个解决方法使用 beforeSave 回调。> beforeSave 在 Cakephp 决定当前保存过程是插入还是更新后调用。<h1>将此代码放到 app_model 中:< h1> ` publicfunctionbeforeSave($opt){ parent::beforeSave($opt); if(isset($opt[‘id’])&&$opt[‘id’]){ if(!isset($this->data[$this->name][$this->primaryKey])){ $this->data[$this->name][$this->primaryKey]=$opt[‘id’]; } } returntrue; } ` ><br >
当您需要强制保存时,请使用此代码
` $this->save( array( ‘Model’=>$fields ), array( ‘id’=>$newId ) ); ` ><br > 将 $fields 替换为要保存的字段数组,但不要在其中插入主键值。> 将 $newId 替换为主键的值< strong> ><br >