【发布时间】:2015-01-07 17:15:48
【问题描述】:
我正在制作一个具有基本消息传递功能的 PHP / MySQL Web 应用程序。两个用户将能够进行包含一系列消息的“对话”。
这是我构想的模型关系:
用户 > 多对多 > 对话
对话 > 多对多 > 用户和一对多 > 消息
消息 > 属于 > 对话(也可以选择属于用户)
为此,我需要以下表格/字段:
用户
- 身份证
- ...
- [许多其他无关紧要的字段]
- ...
对话
- 身份证
对话用户
- user_id
- conversation_id
消息
- 身份证
- user_id
- conversation_id
- 文字
如您所见,我正在考虑使用 ConversationsUsers 联接表来管理用户和对话之间的多对多关系。
我的问题:
我正在尝试确定这是否是最好的方法,目前有两件事困扰着我:
-
Conversations 表只有一个
ID字段,其工作只是捆绑消息,这似乎效率低下/尴尬。有没有更优雅的方法来做到这一点? -
我需要存储一些关于会话的用户特定数据,例如
is_archived。在我上面的计划中,这是不可能的,除非我将这些字段添加到连接表中。我认为这在 CakePHP 中被称为 hasMany through,这是我正在使用的框架 (v2.6.x)。我想不出办法避免这种情况,但如果可能的话,我想这样做,因为我发现过去很难维持这些关系。
欢迎对我的方法提出任何其他想法/反馈。
【问题讨论】:
标签: mysql cakephp cakephp-2.0 has-and-belongs-to-many cakephp-model