2011-03-17 61 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的子集来消除此错误来源。这种方式更新视图时可以省略关系必须改变。

也许提交一个问题的蛋糕开发者表示?