【问题标题】:CakePHP Blank Foreign KeyCakePHP 空白外键
【发布时间】:2011-03-17 14:41:27
【问题描述】:

我遇到过要求用户填写有关建筑物的问卷的情况。 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。不过,只要我将 QuestionnairehasMany 数组移动到 hasOne 数组,一切都会完美运行。

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

谢谢。

更新

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

【问题讨论】:

    标签: cakephp cakephp-1.3


    【解决方案1】:

    罗伯·威尔克森,

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

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

    恕我直言,当涉及到表单时,框架可以通过将hasOne 作为hasMany 的子集处理来消除此错误源。这样,当必须更改关系时,可以省略更新视图。

    也许会为蛋糕开发者提交问题?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      • 2013-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多