代码之家  ›  专栏  ›  技术社区  ›  TCCV

(cakephp)数据库设计帮助

  •  0
  • TCCV  · 技术社区  · 14 年前

    我对如何使用cake的约定来设置它感到困惑。我有一个用户表(相当标准:id(pk,auto increment)、用户名、密码)、一个组表(也相当标准:id,name,user_id)和一个练习表(就像医生的练习一样,而不是“熟能生巧”)。实践表将由一个用户(属于一个DR组)拥有,并且将归零或更多属于实践的其他用户(并且是标准成员)。

    这里有一个 非常 我所想的大致情况:

    user ---(belongs to)---> group
      |
      |
      +<----(belongs to)---- practice
      |                        ^
      |                        |
      +-------------------(belongs to)
    

    我知道如何确保只有组“看守者”的成员才能拥有一个实践,我知道如何确保每个用户都有一个组以及所有这些。

    通常我会理解如何使“实践有许多用户”和“实践属于用户”。然而,我遇到的难题是,如何指定一个实践“有一个”用户,同时“有许多”用户。这是因为实践不知道用户在Cake中属于哪些组。而且(据我所知),我不能只说“practice.owner-id是一个与user.id匹配的外键”,因为cake不会理解这一点。

    如果我弄错了,你能提供一个解释/链接到一个文件,以帮助我在路上?谢谢。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Finster    14 年前

    我不能只说“practice.owner-id是一个与user.id匹配的外键”,因为cake不理解这一点。

    嗯,你可以…只是不是你想的那样。

    你在你的练习模型上设置了一个belongsto…实践中的用户ID字段将是所有者。然后,在您的用户模型上设置另一个belongsto和一个practice_id字段。如果你愿意,你甚至可以在实践中设置一个hasmany来将它与用户绑定。只需将贝朗格斯托和有许多不同的联系命名。在您的模型中,将实践称为用户关系所有者。然后,当您从数据库中实际提取记录时,您将得到一个所有者数组和一个实践中的用户数组(假设适当的$recursive级别)。

    读过这些,可能会让人困惑…总而言之:

    用户中的关联:

    • 贝朗格斯托练习

    实践中的协会:

    • 多用户
    • belongsto所有者(别名 为用户)