我的情况是要求用户填写有关建筑物的问卷。 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
关系创建了表单,我只打算一次创建一个表单,我发誓我不记得以前必须这样做。这一直是一个要求吗?也许我只需要放下一段时间的硬盘。啧。
答案 0 :(得分:0)
Rob Wilkerson,
this可能意味着它始终是一项要求。我想碰到这个问题的原因是手写和生成(cake bake
)代码的混合,这是自然发生的。
因此,如果在开发过程中没有更改要求并从生成的代码开始,则可能永远不会仔细查看hasMany
相关的0s
,并且一切都很顺利。
Imho框架可以通过在表单中处理hasOne
作为hasMany
的子集来删除此错误源。这样,当必须更改关系时,可以省略更新视图。
可能会为蛋糕开发者提出问题吗?