CakePHP空白外键

时间:2011-03-17 14:41:28

标签: cakephp cakephp-1.3

我的情况是要求用户填写有关建筑物的问卷。 Building模型可以 hasMany Questionnaire但至少目前,Building hasOne Questionnaire就足够了。困扰我的是,前者不起作用而后者不起作用,我无法弄清楚原因。

密钥遵循惯例:来自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。但是,只要我将Questionnaire数组从hasMany数组移动到hasOne数组,它就能完美运行。

对内在魔法的任何洞察都会很棒。我无法想象我是第一个遇到这种情况的人,但我不记得以前碰到它。

感谢。

更新

所以我觉得我找到了答案。在我的表单中,由于我实际上只定义了一个调查问卷(虽然我可以支持多个),但我将我的输入定义为Questionnaire.deleted,它适用于hasOne,但是与hasMany无关。对于后者,我必须为Questionnaire.0.deleted创建输入。我已经为无数hasMany关系创建了表单,我只打算一次创建一个表单,我发誓我不记得以前必须这样做。这一直是一个要求吗?也许我只需要放下一段时间的硬盘。啧。

1 个答案:

答案 0 :(得分:0)

Rob Wilkerson,

this可能意味着它始终是一项要求。我想碰到这个问题的原因是手写和生成(cake bake)代码的混合,这是自然发生的。

因此,如果在开发过程中没有更改要求并从生成的代码开始,则可能永远不会仔细查看hasMany相关的0s,并且一切都很顺利。

Imho框架可以通过在表单中​​处理hasOne作为hasMany的子集来删除此错误源。这样,当必须更改关系时,可以省略更新视图。

可能会为蛋糕开发者提出问题吗?