我開始使用cakephp,但現在我遇到了一個問題,我無法解決。CakePhp確實更新,而不是插入新數據
我有哪些相關的以下模型關係:
運動的hasMany點 學生的hasMany點,
現在我想在studentsController檢查每一個鍛鍊有一個點的數據集,如果不插入新的。
當沒有點數據集開始時,該函數會爲第一個練習添加一個新的Point數據集,但此後它只會更新此數據集的erxercise_id,而不是創建新數據集。
控制器功能如下:
public function correct($id = null) {
$this->Student->id = $id;
$this->Student->recursive = 2;
if ($this->request->is('get')) {
$data = $this->Student->Exam->Exercise->find('all');
foreach($data as $exercise)
{
$exerciseID = $exercise['Exercise']['id'];
$this->Student->Point->recursive = 0;
$foundPoints = $this->Student->Point->find('all', array('conditions' => array('exercise_id' => $exerciseID)));
if($foundPoints == null)
{
$emptyPoints = array ('Point' => array(
'exercise_id' => $exerciseID,
'student_id' => $id
)
);
$this->Student->Point->save($emptyPoints);
}
else{
}
}
}
else //POST
{
}
}
你好,這似乎解決我的問題,但我仍然不明白爲什麼CakePHP的嘗試更新DA找到的taset應該不會自動返回而不是插入一個新的 – Thorsten
因爲在這種模式下生成的,是一個很粒子系統可以控制每一個動作。如果您不告訴創建新記錄,則不會創建記錄。如果您必須提供記錄,則必須設置其ID並保存或使用update()方法。這是如何創建一個新的記錄,每次用方法創建() – 2012-09-04 15:21:27
我只是認爲,如果我不設置它將始終創建一個新的ID,似乎我被證明是錯誤的 – Thorsten