Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 内部消息系统laravel数据库设计_Php_Sql_Database_Laravel_Eloquent - Fatal编程技术网

Php 内部消息系统laravel数据库设计

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 但是,我不

我正在为使用Laravel 5.3构建的论坛构建一个内部消息传递系统。基本上,我想拥有与Linkedin类似的消息功能-
用户可以向另一个
用户发送电子邮件,反之亦然。对于给定的对话,将有一个线程,它将发生在两个用户之间。我一直在研究有关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在这种情况下,为接收者创建另一个表并维护一对多关系