2011-03-17 52 views
3

我有一種情況,要求用戶填寫有關建築物的調查問卷。 Building模型可能hasMany Questionnaire雖然,至少現在,這是足夠的Building hasOne Questionnaire。困擾我的是,前者在後者不起作用時不起作用,我無法弄清楚原因。CakePHP空白外鍵

按照慣例:buildings.id被引用在questionnaires.building_id的外鍵中。在hasMany情況下,外鍵只是被忽略試圖插入questionnaires記錄時:

INSERT INTO `questionnaires` (`deleted`, `modified`, `created`, `id`) VALUES (1, '2011-03-17 10:32:24', '2011-03-17 10:32:24', '4d821b78-7314-4ab4-a532-226f6e891b5e') 

building_id在所有的沒有提及。但是,只要我將QuestionnairehasMany陣列移動到hasOne陣列,它就會完美運行。

任何洞察內在的魔法將是偉大的。我無法想象自己是第一個遇到這個問題的人,但我從未想到之前曾遇到過這樣的問題。

謝謝。

UPDATE

所以我想我找到了答案。在我的表格中,由於我真的只定義了一個問卷(儘管我可以支持多個問卷),所以我將輸入定義爲Questionnaire.deleted,對於hasOne工作正常,但對hasMany沒有太大影響。對於後者,我必須爲Questionnaire.0.deleted創建輸入。我爲無數的hasMany關係創建了表單,我一次只打算創建一個表單,我發誓我不記得以前必須這樣做。這一直是一個要求嗎?也許我只需要放下一段時間的困難。嘖。

回答

0

羅布·威爾克森,

this可能意味着它一直是一個必要條件。我猜碰到這個問題的原因是手寫和生成(cake bake)代碼的混合,這是自然發生的。

所以,如果一個人不發展過程中更改的要求,並與生成的代碼開始時,有可能永遠不會在hasMany相關0s仔細一看,一切都保持正常。

當涉及到表單時,Imho框架可以通過處理hasOne作爲hasMany的子集來消除此錯誤來源。這種方式更新視圖時可以省略關係必須改變。

也許提交一個問題的蛋糕開發者表示?