TL; DR
类似Facebook的带有Laravel / MySQL的消息传递系统,访客也可以将消息发送给公司代理商。公司代理商可以与注册客户开始对话。
详细信息
我正在尝试创建一个系统,该系统允许注册的客户/来宾将消息发送到公司代理,反之亦然,但是我陷入了消息的发送者/接收者与消息本身之间的关系。 / p>
这是此系统的要求列表(我已经介绍了几乎所有项目):
这是我目前拥有的:
这几乎涵盖了所有内容,除了用户/来宾消息之间的关系。
每条消息都是由某人(注册客户,注册公司代理或来宾)创建的,并定向到某人(注册客户到部门,访客到部门,注册公司代理到注册客户或注册公司代理)来回复客人)。
我当前的方法是使用两个表:Guest
和User
。 User
表将包含客户和代理商(这很简单,我只需要分配适当的角色)。这意味着我需要在Message
表中存储sender_type(访客或用户),sender_id(id),receiver_type(访客或用户)和receive_id。但是,例如,当Customer1需要向帐单部门发送消息时,我不知道哪个代理会回复该消息。这是否意味着我应该在接收者字段中存储“ null”?这可能导致许多行的列为空。
预先感谢
答案 0 :(得分:0)
拥有两个单独的表是一种方法。您将要确保给定的来宾用户在发送消息后仍然可以访问他们的对话,因此您将要生成来宾用户ID并理想地具有某种其他身份验证来(安全地)访问这些消息。
就实际用户而言,我只需要一个表,其中存储有用户配置文件数据,其中“用户类型”作为您的注册客户(C)或注册公司代理(A)类型。
尽管您可以通过在PHP中在MySQL外部生成来宾配置文件ID和身份验证,然后将其插入到用户表中,而将其简单地放在一个“用户”表中。这样可以大大简化查询数据和建立索引的过程。
任何一种都可以,但是我个人会选择第二种。