2012-09-04 67 views
1

我開始使用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 
    { 

    } 
} 

回答

2

,如果你要插入一個數據你使用create()方法是這樣的: 這只是一個例子,這條線,你創建的每一個時間新的記錄到數據庫 和保存數據

$this->Student->Point->create(); 
$this->Student->Point->save($emptyPoints); 
+0

你好,這似乎解決我的問題,但我仍然不明白爲什麼CakePHP的嘗試更新DA找到的taset應該不會自動返回而不是插入一個新的 – Thorsten

+0

因爲在這種模式下生成的,是一個很粒子系統可以控制每一個動作。如果您不告訴創建新記錄,則不會創建記錄。如果您必須提供記錄,則必須設置其ID並保存或使用update()方法。這是如何創建一個新的記錄,每次用方法創建() – 2012-09-04 15:21:27

+0

我只是認爲,如果我不設置它將始終創建一個新的ID,似乎我被證明是錯誤的 – Thorsten

0
$this->Student->Point->id = ''; 
$this->Student->Point->save($emptyPoints); 
or 

$this->Student->Point->saveAll($emptyPoints); 
+0

學生ID不重要,因爲我只保存點模型,並且point-> id從未設置 – Thorsten

相關問題