0
我正在嘗試通過記錄在我的模型中循環並更新其序列號。根據tempArray的所有值應該是有序的,但更新部分沒有發生。在模型中使用讀取/設置/保存有什麼限制或缺少什麼?從cakephp模型更新單行
$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值是正確的,但沒有更改更新到數據庫記錄。任何幫助將不勝感激。
編輯2:它的工作!最後..出於某種原因,我只設法得到它的工作使用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);
}
嗯,它應該是:「**總是在創建新記錄時調用create()。**」...... – mark
@mark - yah?我不知道。你能澄清一下推理嗎? – Dave
不僅因爲上述原因(在那裏你很容易忘記它),還因爲你永遠不知道是否有早期的回調已經設置了id,因此更新而不是創建記錄。所以這不僅是一個好習慣,而且在創建時總是要添加create()。 – mark