一条信息如何使不同的人显示已读与未读?

我的客户有一个拜访的功能,拜访信息之后会有一个提示,但是这个客户不光我能看到,我的领导也能看到,我想做的是我读完之后在我这边把信息提示去掉,其他人不改变未读状态,领导读完把领导那边的信息提示去掉,两边都不干涉,应该怎么去完成这个功能啊,求个思路

如果不考虑性能,且消息要发给的人不多的话,我倒有个思路。
把客户发的消息加个“阅读人”字段,记录读过该消息的用户ID。
(现在想想真是个糟糕的思路,因为每次想检索某用户未读的消息,都得把所有消息“阅读人”字段搜索一遍……)

新思路:
建立一个消息关系表,如果用户“拜访”,则将该消息发送至需要接受的所有用户(建立行)。如果已读读完则删除行(或者标记“1”)。
(这是目前一些论坛的思路,不过也是接收者不多的前提下。)

我觉得这个应该从数据表关联下手,只要给信息表用户表之间建立多对多的关系就行了。具体做法是建立一个新表,此表把用户id以及对应的信息id记录下来,已读一条就新增一条数据。建立好索引,即使数据量大读取也很快的。不过应该这个数据表的结构还能进一步优化

上面都已经给出具体实现了。其实你该想下,信息本身是不应该有已读未读属性的,已读未读是人的行为,应该从人这个对象上解决问题。

很简单,建立一个表,专门记录用户阅读了的文章id。这是实现功能
若考虑到性能问题,分表。
没啥好纠结的

用redis很容易实现,建一个set,键值为read:信息ID,值为用户ID,每次阅读信息后将用户ID写入这个set中,性能飞起

也可以把阅读记录放到本地,用js进行判断改文章是不是已经阅读过了

  • PHP字符串如何截取表单内的内容?
  • PHP foreach array return 正则式的问题
  • 什么情况下会调用到session_destroy()
  • Laravel 一般后台操作用哪种控制器路由方便?
  • PHP substr() 函数
  • segmentfault还在招php开发人员吗?
  • 网站短信接口被爬, 影响到网站性能
  • 微信最新的js_sdk录音下载下来的speex文件怎么解析
  • PHP中的 directory separator 是不是真的没必要?
  • cordova-plugin-whitelist 这个插件怎么用呀?
  • 对于一个API地址,其限制了固定ip请求的次数,没有办法破解吗?