2013-08-07 21 views
0

我有不同的模型,它們是另一個模型的擴展。在保存數據後獲取ID時出現奇怪的問題

classes (SubModel1, SubModel2, ..,6) extends -> HighModel extends -> Appmodel 

每次我在每個子模型中保存數據時,我會在我的HighModel中調用一個函數來保存剛保存的子模型的ID。
它有五個子模型作品完美,但在一個ID永遠是:
($shouldBeThisId - 1)在添加和編輯功能.... O_O

這是我的附加功能:

public function add() { 
    if ($this->request->is('post')) { 
     $this->M18Tab->create(); 
     if ($this->M18Tab->save($this->request->data)) { 
      $data = $this->M18Tab->findById($this->M18Tab->id); //<---problem's here 
      if($this->M18Tab->M18Model->saveVersion($data)){ 
       $this->Session->setFlash(__('The m18 tab has been saved')); 
       $this->redirect(array('action' => 'view', $this->M18Tab->id)); 
      } else { 
       $this->Session->setFlash(__('Error with versioning system')); 
      } 
     } else { 
      $this->Session->setFlash(__('The m18 tab could not be saved. Please, try again.')); 
     } 
    } 
    //view variables 
} 

確定。所以在保存後我記得「剛剛保存的數據」並將其傳遞給$this->SubModel->HighModel->saveVersion($data)。奇怪的是,如果我試圖強制ID找到:

$data = $this->M18Tab->findById(33); 

它仍然會找到剛纔插入的ID之前的ID:0。

這可能是由什麼引起的?該代碼是所有6款車型,並在唯一一個我有這個問題同樣..

+0

「它仍然只是一個插入之前找到ID 「,我不明白你的意思。試圖強制發現時,你沒有得到33條記錄? – Nunser

+0

我不知道蛋糕,但大多數模型系統不立即沖洗,所以可能是你的煩惱的來源 –

+0

是的..最後一個我得到了37 = S –

回答

0

這更多的是一種意見/建議不是一個答案,但無論如何...

如果要添加一個新的記錄,調用保存後,你可以通過它的ID:

$this->MyModel->getInsertId(); 

請參閱法the cookbook。我知道這個ID也應該可以在$這個 - > MyModel-> ID,但由於它不是在這種情況下工作,你可能會想嘗試:

$data = $this->M18Tab->findById($this->M18Tab->getInsertId()); 
+0

已經做到了......(不幸的是,即使我刪除所有的記錄,並創建一個新的它仍然做這個荒謬的事情。 –

+0

你試過通過原始查詢獲取ID?像$這 - > M18Tab-> query('SELECT id FROM table LIMIT 1 ORDER BY id DESC');或類似的東西? –

相關問題