|
|
1
1
您可以使用单个媒体和单个公文包表。添加一个额外字段,告诉您它属于用户还是组。然后,不要将$belongsTo属性添加到模型中,而是使用bindModel方法动态附加正确的模型。 和 组,使用相同的字段。这是因为当您使用UUID时,永远不会有与组具有相同ID的用户。例子:
编辑: |
|
|
2
1
在Sander Marechal对GUIDs说的话中,你可能想考虑一下 PolymorphicBehavior 适用于您的媒体模型。它将加速你的应用程序,你不必担心任何时候关系破裂。 关于您的设计问题。我们并不了解您的应用程序,也无法提供任何详细的答案。不,这是个谎言: 不过,我可以给你一些提示。:)你应该坐下来,画出你的模型关系,并思考它们在现实生活中如何使用。然后看看是否有什么遗漏,或者可能有太多的东西。优化并最小化从数据库返回的数据。这里的关键概念是 简单 这是错误的 . 如果你走了一半,发现自己犯了一个设计错误- 承认你犯了一个设计错误并改正它 |
|
|
3
0
我使用了RoR和Castle,而不是CakePHP,所以我将用一般术语进行讨论。 您一直在做的和应该继续做的被称为“域建模”——MVC非常适合这样做,因为您的模型成为域模型中对象的表示 2: 您可以将公文包和媒体模型更改为,而不是引用其父对象的id,您有一个“ObjectId”和“ObjectType”-ObjectId是父对象的id,ObjectType是类型。您将无法自动连接这些关系,但可以使用自定义代码进行连接,以便为用户获取所有媒体
三: 是的,这是一个可扩展的设计。记住将尽可能多的特定于模型的工作推到模型本身(或存储库)中,以使其“正常工作” 也许吧,但你永远不会得到一个“完美”的系统。MVC很棒,您的设计对于一个简单的社交网络来说似乎很可靠。毫无疑问,你会添加帖子/评论等内容。 |