2010-08-13 65 views
0

我很困惑如何使用Cake的约定进行设置。我有一个用户表(很漂亮的标准:id(pk,自动增量),用户名,密码),一个表格(也是非常标准的:id,name,user_id)和一个练习表(像医生的做法,不是像“练习完美”)。练习表将由一个用户(属于一个dr组)拥有,并且将有零个或更多属于该练习的其他用户(并且是标准成员)。帮助(CakePHP)数据库设计

这里有什么,我想一个非常粗拉:

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

我知道如何确保只有组“看守”的成员可以自己练习,我知道如何确保每个用户都有一个组和所有这些。

通常我会明白如何让“练习有很多用户”和“练习属于用户”。然而,在我陷入困境的时候,我如何指定一个练习“有一个”用户,而且“有很多”用户。这是因为练习不知道用户属于Cake的组。 (据我所知),我不能只说“practice.owner_id是一个与user.id匹配的外键”,因为Cake不会理解这一点。

如果我错了,你能否提供一个解释/链接到一个文档,以帮助我的方式吗?感谢所以。

回答

1

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

那么,你可以......只是不是你想的方式。

您在您的Practice模型上设置了belongsTo ...练习中的您的user_id字段将成为所有者。然后,在您的用户模型上使用practice_id字段设置另一个belongsTo。如果你愿意,你甚至可以在练习中设置一个hasMany来将其绑定到用户。只需以不同的方式命名belongsTo和hasMany关联。在您的模型中调用实践belongsTo用户关系所有者。然后,当你真的从数据库中拉出记录时,你会在练习中得到一个Owner数组和一个用户数组(假设适当的$递归级别)。

读了一下,可能会让人困惑......总结:

协会用户:

  • 属于关联实践

协会在实践:

  • 的hasMany用户
  • 属于关联所有者(用户别名 )
+0

谢谢,这听起来像正是我需要的。只需一次后续操作,当你说owner是用户的别名时,你的意思是我应该创建一个不同的数据库表,或者别名是Cake alias? – Tim 2010-08-13 17:20:57

+0

对不起,是的,这是不明确的... 基本上,它只是将在您的实践模型中的协会的名称。然后,在关联本身中,您将所有者的className设置为User。 下面是一个手册页:http://book.cakephp。org/view/1046/Multiple-to-the-same-model – Finster 2010-08-13 17:40:21

+0

oooooh,我错过了那个文档。谢谢!我想我现在明白了。 – Tim 2010-08-13 18:32:32