Php 内部消息系统laravel数据库设计
我正在为使用Laravel 5.3构建的论坛构建一个内部消息传递系统。基本上,我想拥有与Linkedin类似的消息功能-Php 内部消息系统laravel数据库设计,php,sql,database,laravel,eloquent,Php,Sql,Database,Laravel,Eloquent,我正在为使用Laravel 5.3构建的论坛构建一个内部消息传递系统。基本上,我想拥有与Linkedin类似的消息功能-用户可以向另一个用户发送电子邮件,反之亦然。对于给定的对话,将有一个线程,它将发生在两个用户之间。我一直在研究有关StackOverflow的一些问题,但还没有完全找到我想要的——在数据库设计方面 以下是我的想法: 消息: id PK 发件人id FK发送给用户用户id 内容 邮件\u收件人: id PK 消息id FK到消息id 收件人id FK给用户id 但是,我不
用户可以向另一个用户发送电子邮件,反之亦然。对于给定的对话,将有一个线程,它将发生在两个用户之间。我一直在研究有关StackOverflow的一些问题,但还没有完全找到我想要的——在数据库设计方面
以下是我的想法:
消息
:
- id PK
- 发件人id FK发送给
用户
用户id
- 内容
邮件\u收件人
:
- id PK
- 消息id FK到
消息
id
- 收件人id FK给
用户
id
但是,我不能100%确定用户
、消息
和消息接收者
之间的关系类型。用户会收到很多信息。消息将属于用户。但是,我如何将消息_recipients
表考虑在内
请随意建议不同的设计:)您可以创建一个带有id
、发件人id
、收件人id
、消息的表
sender\u id
和recipient\u id
是指向users
表的外键
它是,您可以将此表视为轴心,因此您可以定义belongtomany
关系。如果您愿意经常使用此表,也可以为此表创建模型。尝试这种结构:
messages:
id - int, autoincrement id
parent_id - int. To maintain message threads
sender_id - int. Senders Id
recipient_id- int. Recievers Id
content - text, Message content
status - enum('0', '1') for Read, Unread, Deleted etc
或者通过维护外键关系将其分成2或3个表。谢谢。我将尝试一下:)@Ashmenhenett您询问过如何使用关系,它应该是两个belongsTo()
关系,在用户
模型中定义,但使用不同的外键。如果您觉得这听起来很陌生,请创建消息
模型,并在用户
和消息
之间使用两个hasMany()
关系,您将获得更简单的消息处理方法和更可读的代码。这两种方法在不同的情况下都很好。谢谢你的意见。我来看看这个。如果我使用2个hasMany()
,一个在用户中,一个在模型中,它是否需要一个belongsTo()```任何地方?不,不。你应该在用户模型中使用两个hasMany()
。一个用于为收件人获取消息,另一个用于为发件人获取消息。在Message
模型中,您还应该创建两个belongsTo()
关系,使用不同的外键按用户ID获取用户数据(例如,名字)。例如,在Message
中定义的关系将类似于belongsTo('App\user','sender\u ID','ID')代码>和属于('App\User','recipient\u id','id')代码>也许更多也会有帮助。干杯!谢谢你的输入。如果接收者不仅仅是用户呢?也许接收者可能是团队,来宾..@lovecoding laravel在这种情况下,为接收者创建另一个表并维护一对多关系