2011-08-12 162 views
0

我有以下的模型關聯:保存屬於關聯模型CakePHP的

Question belongsTo Category 
Category hasMany Question 
Question hasMany Answer 
Answer belongsTo Question 

我希望能夠創建創建一個問題,當一個新的類別,但我得到一個Category.id驗證錯誤,儘管我不是在$this->data陣列中發送設置Category.id。我以相同的形式成功創建了新答案,但該類別未創建。

我的形式:

<h3>Create multiple choice question</h3> 
<?php 

echo $this->Form->create('Question', array('action' => 'addmc')); 
echo $this->Form->input('Question.name'); 
echo $this->Form->input('Question.questiontext', array('label' => 'Question Text (What students will see)')); 
echo $this->Form->input('Question.generalfeedback', array('label' => 'General feedback (Feedback student will see when reviewing question)')); 

for ($i = 0; $i < 4; $i++) { 
    echo $this->Form->input('Answer.'.$i.'.answer', array('label' => 'Answer ' . ($i+1))); 
    echo $this->Form->input('Answer.'.$i.'.score', array('label' => 'Score (Number from 0 to 100)')); 
} 
echo $this->Form->input('Category.0.name', array('label' => 'Category')); 
echo $this->Form->button('Save question', array('class' => 'form')); 
echo $this->Form->end(); 

?> 

我在控制器使用白水。我嘗試刪除Category.id的驗證規則。保存操作已經過,但沒有創建類別。

+0

檢查你的'Category.id'驗證規則中沒有''required'=> true'。 – deizel

+0

yeap ..設置爲false ...和規則只是數字 – AlexBrand

+0

我在想也許我只能創建hasMany模型,但不屬於模型,但我不知道 – AlexBrand

回答

1

在控制器中,您需要先保存類別,獲取該插入的id並將其分配給問題中的category_id,然後您可以在問題和答案上使用saveAll。

0

如果問題屬於類別,你可能有一個Question.category_id字段...應該用於在選擇框中選擇類別(至少,這是我認爲你希望它工作的方式)。你現在試圖達到這個目標對Cake來說沒有意義。

+0

那麼該字段不是我的形式。但我在想同樣的事情......因爲關係類別必須被選擇而不是被創建......但是有什麼方法可以解決這個問題嗎? – AlexBrand

+1

我誤解了你正在做的事......另外一個不錯的功能將是一個正常的選擇(category_id),其中包含所有當前類別和一個Ajax操作輸入,通過它你可以隨時添加類別,不要忘記在Ajax請求之後更新選擇,以便它包含新的類別。 –