帮助(CakePHP)数据库设计

时间:2010-08-13 16:50:35

标签: database-design cakephp

我对如何使用Cake的约定进行设置感到困惑。我有一个用户表(相当标准:id(pk,自动增量),用户名,密码),一组表(也很标准:id,name,user_id)和一个练习表(就像医生的练习,不是比如“练习变得完美”)。练习表将由一个用户(属于一个dr组)拥有,并且将归零或更多属于该练习的其他用户(并且是标准成员)。

这是我正在思考的非常粗略绘图:

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

我理解如何确保只有“看护人”小组的成员可以拥有一个练习,并且我知道如何确保每个用户都有一个小组以及所有这些小组。

通常我会理解如何让“练习有很多用户”和“练习属于用户”。但是,我在哪里难以理解,我如何指定练习“有一个”用户,但“有很多”用户。这是因为该练习不知道用户在Cake中所属的组。而且(据我所知),我不能只说“practice.owner_id是一个匹配user.id的外键”,因为Cake不会理解这一点。

如果我弄错了,你可以提供一个解释/链接到一个文件来帮助我的路吗?谢谢你。

1 个答案:

答案 0 :(得分:1)

  

我不能只说“practice.owner_id是一个匹配user.id的外键”,因为Cake不会理解这一点。

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

您在练习模型上设置了belongsTo ...练习中的user_id字段将是所有者。然后,使用practice_id字段在User模型上设置另一个belongsTo。如果需要,您甚至可以在练习中设置hasMany以将其绑定到用户。只需将belongsTo和hasMany关联命名为不同的名称。在模型中调用Practice belongsTo用户关系所有者。然后,当您实际从数据库中提取记录时,您将获得一个Owner数组和一个用户数组(假设适当的$递归级别。)

回过头来看,这可能令人困惑......总结一下:

用户关联:

  • belongsTo Practice

实践中的协会:

  • hasMany User
  • belongsTo所有者(别名 对于用户)