【问题标题】:cakePHP HABTM, am I getting it all wrong?cakePHP HABTM,我错了吗?
【发布时间】:2011-11-09 15:40:47
【问题描述】:

我知道每个新行都会导致删除之前的行?

它背后的想法是什么?我不相信它是..
那么,我做错了什么?


编辑 A

我有一个向Stores 表添加商店的表单。商店有一个名为owner_id 的列,它通过belongsTo 关系与Users 表相关联。

还有一个名为stores_users 的表应该使用HABTM 关系存储每个商店的经理。

对于此表,有一个带有电子邮件字段的表单,通过将记录直接保存到 stores_users 表,将用户连接到商店。
所以,如果我理解正确的话,任何地方都没有完整的 HABTM 保存。

所以,我的问题是:

  1. 这样使用会出现问题吗?
  2. 如果我的方法不正确,您能告诉我怎么做吗?
  3. 如何使用存储的数据,使用$this->User->find(...)获取用户可以管理的所有店铺?

【问题讨论】:

    标签: cakephp has-and-belongs-to-many


    【解决方案1】:

    是的,这是 cakephp 中 HABTM 的默认行为 虽然这不是“每一行”,而是“每个 HABTM 保存”。

    如果您始终提供所有 HABTM 值,则此方法有效。 并且根据此类 HABTM 的规范烘焙视图,这一切都是开箱即用的。

    如果您更改默认行为(旧的不会被删除),您需要确保没有重复。我认为,有一些行为试图实现这一目标。 但我建议您按照 cake 的默认行为可以完成其工作的方式构建表单。

    例子:

    IS:1,3,6(在数据库中为这个键)

    新:2,3,6(来自表格)

    (蛋糕删除1,3,6并添加2,3,6)

    => 整体结果(忘记不同的主键):“1”被删除,“2”被添加

    所以它可能不是最节省资源的方式,但它肯定是最简单和最快的。

    【讨论】:

    • 谢谢@mark,我需要更多帮助来解决这个问题 - 请。我将编辑问题并将我的问题添加到编辑(A)。
    猜你喜欢
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多