我正在尝试循环浏览模型中的记录并更新其序列号。根据tempArray,所有值都应按顺序排列,但更新部分不会发生。在模型中使用读取/设置/保存是否有限制或我缺少什么?
$tempArray['highest serial'] = $highest['Paragraph']['serial_number'];
for( $i=$paragraph['Paragraph']['serial_number']; $i<$highest['Paragraph']['serial_number']; $i++ ){
$current = $this->find('first', array(
'fields' => array(
'Paragraph.id',
'Paragraph.serial_number'
),
'conditions' => array(
'Paragraph.webpage_id' => $paragraph['Paragraph']['webpage_id'],
'Paragraph.list_element' => $paragraph['Paragraph']['list_element'],
'Paragraph.serial_number' => ($i + 1)
)
));
$tempArray['i ' . $i . ' id'] = $current['Paragraph']['id'];
$tempArray['i ' . $i . ' serial'] = $current['Paragraph']['serial_number'];
$this->create($current);
// $this->read('serial_number', $current['Paragraph']['id']);
// $this->id = $current['Paragraph']['id'];
$this->set('serial_number', $i);
$this->save();
}
return $tempArray;
虽然tempArray的输出为( [highest serial] => 2 [i 1 id] => 7 [i 1 serial] => 2 )
,但id=7
的记录的serial_number未更新。
Haelp!
编辑:按照建议将read()更改为create()。不会发生SQL或PHP错误,并且tempArray值正确,但没有更新更新到数据库记录。任何帮助将不胜感激。
Edit2:它正在运作!最后..由于某种原因,我只是设法使用saveField()
使其工作 for( $i=$paragraph['Paragraph']['serial_number']; $i<getHighestSerial($paragraph); $i++ ){
$current = $this->find('first', array(
'fields' => array(
'Paragraph.id',
'Paragraph.serial_number'
),
'conditions' => array(
'Paragraph.webpage_id' => $paragraph['Paragraph']['webpage_id'],
'Paragraph.list_element' => $paragraph['Paragraph']['list_element'],
'Paragraph.serial_number' => ($i + 1)
)
));
$this->id = $current['Paragraph']['id'];
$this->saveField('serial_number', $i);
}