2010-06-03 75 views
2

我在嘗試保存(更新)一些關聯數據時遇到問題。我已經閱讀了大約一百萬份谷歌回報,但似乎沒有任何解決方案。我在智慧的結尾,並希望在這裏有一些靈魂可以幫助。saveall不保存關聯數據

我使用1.3.0-RC4,我的數據庫在InnoDB中。

課程有很多course_tees
CourseTee屬於當然

我的控制器功能是相當簡單的(我將它儘可能簡單):

if(!empty($this->data)) 
$this->Course->saveAll($this->data); 

我已經嘗試了很多$ this-> data ['Course']的不同變體,保存($ this-> data)等,但沒有運氣。

它保存課程信息,但不保存CourseTee的東西。我沒有收到錯誤消息。

由於我不知道任何給定課程將有多少T恤,我會在循環中動態生成表格輸入。

$form->input('CourseTee.'.$i.'.teeName', array(
    'error' => false, 
    'label' => false, 
    'value'=>$data['course_tees'][$i]['teeName'] 
)) 

課程輸入更簡單:

$form->input('Course.hcp'.$j, array(
    'error' => false, 
    'label' => false, 
    'class' => 'form_small_w', 
    'value'=>$data['Course']['hcp'.$j] 
)) 

這是我如何格式化數據:

Array 
(
    [Course] => Array 
    (
    [id] => 1028476 
    ... 
) 

    [CourseTee] => Array 
    (
    [0] => Array 
    (
    [key] => 636 
    [courseid] => 1028476 
    ... 
) 

    [1] => Array 
    (
    [key] => 637 
    [courseid] => 1028476 
    ... 
) 

    ... 

) 
) 

回答

2

根據CakePHP的約定,你必須提供[course_id] => 1028476,而不是[courseid] => 1028476。檢查你的模型綁定(大小寫和下劃線)。必須有「課程有很多CourseTee」。 做this way保存:

if ($this->Course->saveAll($this->data, array('validate' => 'first'))) { 
    $this->_flash(__('Successfully saved.', true), 'success'); 
} else { 
    $this->_flash(__('Cannot save. Does not validates.', true), 'error'); 
} 
+1

首先,感謝deceze爲格式正確我的職務。我會盡量記住下次再做。 Bancer,這太棒了。它正在工作。我改變了我的模型綁定到你的建議,但由於我的觀點也是錯誤的,我的T恤沒有顯示,我認爲這是不正確的。我不確定爲什麼我沒有看到它,因爲所有其他模型都不一樣。 再次感謝您的時間。 – junior29101 2010-06-03 19:22:59